If I have the following code:

public class MyClass 
{ 
  public string myName { get; private set; } 
  public string myId { get; set; } 
} 

A private compiler-generated variable is created for the setter. I want the setter not to be accessible for object initialization only. But, how do I get to initially set the myName variable?

Reading about object initialization I found the following:

... it’s read-only and the private field representing the underlying storage has a compiler-generated name that we cannot use in a constructor to assign to it. The solution is to use [...] object initializers

The solution would be, then, to use:

MyClass mc = new MyClass { 
myName = "What ever", 
myId = "1234" 
};

But this ends up in a compiler error sayin that:

The property or indexer 'MyClass.MyClass.myName' cannot be used in this context because the set accessor is inaccessible

So, is there a way to achieve setting this value using object initialization? If there is, what is the correct way to do it?

Edit
Report