Вы что-то здесь перепутали.В вашем примере компилятор выдаст ошибку, если вы попытаетесь сделать A.Budget=new SomeObject();
, если свойство Budget
в классе A
не имеет установщика.С этого момента я могу только предположить в чем ваша проблема.
Я предполагаю, что вы хотите, чтобы коллекция, включенная в свойство Budget
, была доступна только для чтения.Вероятно, поэтому вы сделали это IEnumerable<SomeObject>
, тогда как приватный участник - List<SomeObject>
.Поэтому, даже если у вас нет установщика, вы все равно можете сделать (A.Budget as List<SomeObject>).Add(bla)
.Чтобы запретить это, вы можете использовать List.AsReadOnly , например:
private readonly List<SomeObject> _budget;
public ReadOnlyCollection<SomeObject> Budget
{
get
{
return _budget.AsReadOnly();
}
}