Mam słownika:C# - Dodawanie obiektów, które implementują interfejsy do słownika
private Dictionary<Type, IExample> examples;
Mam dwie klasy, które implementują interfejs:
public class Example1 : IExample
{
}
public class Example2 : IExample
{
}
Stworzyłem sposób, aby uzyskać instancję ze słownika, jeśli istnieje, ale próbuję wymyślić sposób utworzenia nowego obiektu, jeśli nie istnieje.
public T GetExample<T>() where T : IExample
{
// Return the signal if it exists
if (examples.ContainsKey(typeof(T)))
{
IExample value;
if (!examples.TryGetValue(typeof(T), out value))
{
// unable to get value
}
return (T)value;
}
// Stuck on this line here. How exactly do I instantiate a new example if it doesn't exist.
examples.Add(typeof(T), new);
return default(T);
}
Czy to możliwe?
marginesie: nie lubię „getter” metod, które mutują stanu. Metoda 'GetSomething()' powinna tylko * uzyskać * "coś", a nie dodawać czegoś do słownika. Lepszą nazwą dla twojej funkcji może być 'GetOrCreateExample()' –
Treb