Установка частного установщика с использованием инициализатора объекта
-
11-12-2019 - |
Вопрос
Почему можно использовать инициализатор объекта для установки частного свойства auto, если инициализатор вызывается из класса, которому принадлежит свойство auto?В качестве примера я включил два класса.
public class MyClass
{
public string myName { get; private set; }
public string myId { get; set; }
public static MyClass GetSampleObject()
{
MyClass mc = new MyClass
{
myName = "Whatever", // <- works
myId = "1234"
};
return mc;
}
}
public class MyOtherClass
{
public static MyClass GetSampleObject()
{
MyClass mc = new MyClass
{
myName = "Whatever", // <- fails
myId = "1234"
};
return mc;
}
}
Решение
А private
Модификатор в установщике означает - частный для включающего типа.
То есть свойство может быть установлено только содержащим его типом.
Если бы это было не так, вы бы никогда не смогли установить это свойство, и оно фактически было бы доступно только для чтения.
Из MSDN - частный (ссылка на C#):
Закрытые члены доступны только внутри тела класса или структуры, в которой они объявлены.
Другие советы
Потому что частные средства доступны в классе, который принадлежит свойству.
Не связан с StackOverflow