Как я объявляю новый класс поиска для свойства в объектной стандартной программе инициализатора в c#?
Например.
new Component() { ID = 1, Name = "MOBO", Category = new Lookup<int, string> }
Категория укусила, всегда получают ошибку компиляции.
Мне назвали свойство Category
это имеет тип Lookup<int, string>
и я хочу инстанцировать этого свойства через
new Component() { ID = 1, Name = "MOBO", Category = new Lookup<int, string> };
Но я не могу закончить ошибки компиляции.
Согласно документации MSDN, не существует общедоступного конструктора для класса Lookup
: http: // msdn. microsoft.com/en-us/library/bb460184.aspx
Вы можете создать экземпляр Lookup
, вызвав ToLookup
для объекта, реализующего IEnumerable
.
Вы захотите сделать что-то вроде:
new Component { ID = 1, Name = "MOBO", Category = new[] { … }.ToLookup(…) }
Обновите, чтобы ответить на комментарии:
Я не уверен, откуда вы получаете информацию о своей категории, поэтому я что-нибудь придумаю…
new Component {
ID = 1,
Name = "MOBO",
Category = new Dictionary<int, string> {
{ 3, "Beverages" }
{ 5, "Produce" }
}.ToLookup(o => o.Key, o => o.Value)
}
Я предполагаю, что ваши категории будут поступать из какого-то другого источника вместо того, чтобы создавать экземпляр словаря, как я сделал здесь.
Вы не можете просто использовать ToLookup; вы должны указать ему, как находить ключи и значения:
// from ChaosPandion's code
using System.Linq; // make sure you have the using statement
var component = new Component()
{
ID = 1,
Name = "MOBO",
Category = (Lookup<int, string>)
(new Dictionary<int, string>() { {1, "one"} })
.ToLookup(p=>p.Key, p=>p.Value)
}
Я не понимаю, почему вы хотите использовать здесь поиск вместо словаря.
Из MSDN :
Нет общедоступного конструктора для создания нового экземпляра Lookup
.
Кроме того, объекты Lookup
неизменяемы, то есть вы не можете добавлять или удалять элементы или ключи из Lookup
после того, как он был создан.