У меня большой статический список, который в основном является справочной таблицей, поэтому я инициализирую таблицу в коде.
private class MyClass
{
private class LookupItem
{
public int Param1 { get; set; }
public int Param2 { get; set; }
public float Param2 { get; set; }
public float Param4 { get; set; }
}
private static List<LookupItem> _lookupTable = new List<LookupItem>()
{
new LookupItem() { Param1 = 1, Param2 = 2, Param3 = 3 Param4 = 4 },
new LookupItem() { Param1 = 5, Param2 = 6, Param3 = 7 Param4 = 8 },
//etc
}
}
Реальное LookupItem
имеет много других свойств, поэтому я добавил конструктор, чтобыдля более компактного формата инициализации:
private class MyClass
{
private class LookupItem
{
public int Param1 { get; set; }
public int Param2 { get; set; }
public float Param2 { get; set; }
public float Param4 { get; set; }
public LookupItem(int param1, int param2, float param3, float param4)
{
Param1 = param1;
Param2 = param2;
Param3 = param3;
Param4 = param4;
}
}
private static List<LookupItem> _lookupTable = new List<LookupItem>()
{
new LookupItem(1, 2, 3, 4),
new LookupItem(5, 6, 7, 8),
//etc
}
}
Что я действительно хотел бы сделать, так это использовать формат инициализатора коллекции для самого объекта, чтобы я мог избавиться от new LookupItem()
в каждой строке.Например:
private static List<LookupItem> _lookupTable = new List<LookupItem>()
{
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
//etc
}
Возможно ли это?Мне нравится думать, что это потому, что KeyValuePair
из Dictionary<>
можно инициализировать таким образом.
MSDN Состояния:
Коллекцияинициализаторы позволяют указать один или несколько инициализаторов элементов при инициализации класса коллекции , который реализует IEnumerable .Инициализаторы элемента могут быть простым значением, выражением или инициализатором объекта.Используя инициализатор коллекции, вам не нужно указывать несколько вызовов метода Add класса в вашем исходном коде;компилятор добавляет вызовы.
Значит ли это, что мне нужно реализовать IEnumerable
в моем классе LookupItem
и вернуть каждый параметр?Мой класс не является классом коллекции.