У меня есть класс со свойством, что это словарь:Ленивые словарные свойства в C#
public class Entity
{
public Dictionary<string, string> Name { get; set; }
}
Я хотел бы переключить это свойство использовать ленивую initializtion. Я пробовал следующее:
public class Entity
{
private Lazy<Dictionary<string, string>> name = new Lazy<Dictionary<string, string>>(() => new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase));
public Dictionary<string, string> Name
{
get
{
return name;
}
set
{
name = value;
}
}
}
Это, конечно, ошибка, так как имя и имя имеют разные типы. Для жизни меня, однако, я не могу понять, как правильно это указать. Все, что я действительно хочу, это иметь имя, которое остается равным null, пока я не получу доступ к нему, а затем создам его при первом чтении или записи.
У вас есть состояние гонки. – LukeH
Да, я добавил примечание об этом, возможно, когда вы вводили свой комментарий. ;) – Vache
D'oh, похоже, я использовал свои перчатки [complicator's] (http://thedailywtf.com/Articles/The_Complicator_0x27_s_Gloves.aspx). Это то, что происходит, когда я влюбляюсь в классную особенность. Спасибо, я буду отмечать это как ответ, как только SO позволяет мне. Теперь, потому что у меня их куча, мне просто нужно сделать для них какую-то фабрику. –