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?