Как добавить объект списка в класс с помощью лямбды? - PullRequest
1 голос
/ 22 декабря 2009

Скажите, у меня есть класс с 2 свойствами

class TestClass
{
    public int propertyOne {get;set;}
    public List<int> propertyTwo {get; private set;}
    public TestClass()
    {
        propertyTwo = new List<int>();
    }
}

Используя linq, я пытаюсь создать список TestClass следующим образом:

var results = from x in MyOtherClass
              select new TestClass()
              {
                  propertyOne = x.propertyFirst,
                  propertyTwo = x.propertyList
              };

propertyTwo = x.propertyList фактически выдает ошибку с волнистым красным подчеркиванием.

Как реализовать в этом случае эквивалент свойства Two.AddRange (other)?

Приветствия

Ответы [ 3 ]

3 голосов
/ 22 декабря 2009

Как уже говорили другие, вы не можете установить propertyTwo таким образом, поскольку он объявлен как private. Если вы просто хотите установить его на конструкцию, вы можете добавить второй конструктор, который позволит вам передать начальный список, давая вам:

class TestClass
{
    public int propertyOne {get;set;}
    public List<int> propertyTwo {get; private set;}

    public TestClass() : this(new List<int>()) { }
    public TestClass(List<int> initialList)
    {
        propertyTwo = initialList;
    }
}
...
var results = from x in MyOtherClass
select new TestClass(x.propertyList)
{
    propertyOne = x.propertyFirst
};
2 голосов
/ 22 декабря 2009

Как сказано выше в Забытой точке с запятой, похоже, проблема в том, что у вашего propertyTwo есть частный сеттер.

Попробуйте изменить код в TestClass на:

public List<int> propertyTwo {get; set;}

Я не верю, что вы можете инициализировать свойства, которые установлены как частные, с помощью Asymmetric Accessor Accessibility.

1 голос
/ 22 декабря 2009

Да, доступность - проблема здесь. Если вам не нужен общедоступный установщик, вы можете добавить метод SetPropertyList (), чтобы установить значение, эффективно делая то же самое по-другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...