like below fixes the issue The code should clearly NOT cause an infinite loop, as the Getter for MyProperty does not exist (read: not even private). The compiler should detect this. Nevertheless, a better design would be to provide a public getter for public settable properties. What your code will do is de-facto calling a method, so why would you even need the property? Simply make your DoTask() method public and let clients call it directly. Remember, with your code, you had absolutely no chance to get the value of MyProperty, not even from within your class.