Posso creare un dizionario, dove il tipo di chiave è un generico?Posso usare un generico come chiave?
ad es.
void addKey<T>(object value)
{
dic.add(T, value);
}
Posso creare un dizionario, dove il tipo di chiave è un generico?Posso usare un generico come chiave?
ad es.
void addKey<T>(object value)
{
dic.add(T, value);
}
E che dire?
void AddKey<T>(T value)
{
dic.Add(typeof(T), value);
}
Usage:
// the type of value is automatically detected based on usage
AddKey("sampleString");
Si potrebbe passare tipo exlicity di corso:
AddKey<BaseClass>(derriveredInstance);
Poi, dizionario è di tipo Dictionary<Type, object>
Lo svantaggio: Non è possibile passare insta nce di altri (non di base o meno lo stesso) di classe come la chiave:
AddKey<int>("some string"); // compile time error
Se si vuole ottenere qualcosa di simile a questo, si dovrebbe dare un'occhiata a altre risposte e passare Type
o passare object
come tipo di valore.
Giusto per riassumere i commenti:
Dictionary<Type, object> dic = new Dictionary<Type, object>();
void AddKey(Type key,object value)
{
dic.Add(key, value);
}
e si può usare in questo modo:
AddKey(typeof(string), new Object());
'typeof (T)' otterrà un 'type' che rappresenta' T'. –
Grazie ta.speot. Lungo una linea simile, potrei passare la classe come parametro? Piuttosto che passare un'istanza della classe come parametro? – Ginger
@Ginger puoi passare un'istanza della classe 'Type', che puoi ottenere usando il metodo' typeof' –