Добавление значений в словарь с помощью встроенной инициализации его контейнера

У меня есть после класса City. Каждый объект города содержит словарь, ключи которого являются языковыми тегами (скажем: «EN», «DE», «FR»...), а значения — названиями городов на соответствующих языках (например: Rome / Rom и т. д.). .

public class City:
{
  private IDictionary<string, string> localizedNames = new Dictionary<string, string>(0);
  public virtual IDictionary<string, string> Names
  {
    get { return localizedNames ; }
    set { localizedNames = value; }
  }
}

Большинство городов имеют одинаковые названия независимо от языка, поэтому конструктор Cityфактически создает английское отображение:

  public City(string cityName)
  {
    this.LocalizedNames.Add("EN", cityName);
  }

Возникает вопрос: есть ли способ добавить другое значения через встроенную инициализацию?

Я пробовал различные варианты следующего без семантического успеха (не компилируется):

AllCities.Add(new City("Rome") { Names["DE"] = "Rom" };

Я также пытался создать новый словарь, но это явно перезаписывает параметр "EN":

AllCities.Add(new City("Rome") { Names = new Dictionary<string, string>() { { "DE", "Rom" } } };

Кто-нибудь знает, возможно ли это?

23
задан Tim Bourguignon 12 June 2012 в 15:57
поделиться