Ho la seguente classe City
. Ogni oggetto della città contiene un dizionario che le chiavi sono tag della lingua (diciamo: "EN", "DE", "FR" ...) e quali valori sono i nomi delle città nelle lingue corrispondenti (es: Roma/Rom ecc.) .Aggiunta di valori a un dizionario tramite inizializzazione inline del suo contenitore
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; }
}
}
maggior parte delle città hanno gli stessi nomi qualunque sia la lingua in modo che il costruttore di City
non crea effettivamente la mappatura inglese:
public City(string cityName)
{
this.LocalizedNames.Add("EN", cityName);
}
Qui viene la domanda: c'è un modo per aggiungere la altri valori tramite inizializzazione in linea?
ho provato diverse varianti del seguente senza successo semantica (non compilare):
AllCities.Add(new City("Rome") { Names["DE"] = "Rom" };
Ho anche cercato di creare un nuovo dizionario, ma questo sovrascrive ovviamente il parametro "EN":
AllCities.Add(new City("Rome") { Names = new Dictionary<string, string>() { { "DE", "Rom" } } };
Qualcuno sa se questo è possibile?
Nota: * inizializzazione del costruttore * non è la terminologia appropriata. Pensa all'inizializzazione di ** oggetto ** e ** raccolta **, nessuno dei quali viene eseguito tramite un costruttore. –
hai ragione, ho modificato il titolo, grazie –