Hm, not sure to understand what you meant by "write protected"? Readonly is not for an external API point of view, but it is for internal purpose: It is like having a code contract that says "this variable should not be modified outside the constructor" and readonly is here for this purpose, not a private setter.