Mam następującą klasę City
. Każdy obiekt miasta zawiera słownik, którego kluczami są znaczniki języków (powiedzmy: "EN", "DE", "FR" ...) i które wartości są nazwami miast w odpowiednich językach (np .: Rzym/Rom itp.) .Dodawanie wartości do słownika poprzez inline inicjalizację kontenera
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; }
}
}
Większość miast mają takie same nazwy bez względu na język, więc konstruktor City
ma faktycznie tworzy odwzorowanie angielskiego:
public City(string cityName)
{
this.LocalizedNames.Add("EN", cityName);
}
tu pojawia się pytanie: czy istnieje sposób, aby dodać inne wartości poprzez inicjalizację inline?
Próbowałem różnych odmian następujących bez semantycznej sukces (nie skompilować):
AllCities.Add(new City("Rome") { Names["DE"] = "Rom" };
Próbowałem też stworzenie nowego słownika, ale to oczywiście nadpisuje „en” parametr:
AllCities.Add(new City("Rome") { Names = new Dictionary<string, string>() { { "DE", "Rom" } } };
Ktoś wie, czy to jest możliwe?
Uwaga: * * konstruktor inicjujący nie jest odpowiednia terminologia. Think ** obiekt ** i ** kolekcja ** inicjalizacja, z których żadna nie jest wykonywana przez konstruktor. –
masz rację, edytowałem tytuł, dzięki –