Ho un tipo generico:Perché questo codice si lamenta di "l'arità della definizione del tipo generico"?
class DictionaryComparer<TKey, TValue> : IEqualityComparer<IDictionary<TKey, TValue>>
E un metodo factory che (dovrebbe) creare un'istanza di questa classe per un determinato tipo di dizionario.
Strippare tutte le cose estranee - anche questo codice genera la stessa eccezione.
private static object CreateDictionaryComparer()
{
Type def = typeof(DictionaryComparer<,>);
Type t = def.MakeGenericType(new Type[] { typeof(String), typeof(object) });
return Activator.CreateInstance(t);
}
Il asserisce passo quindi so che T
è generica e ha due argomenti generici. La riga con MakeGenericType
tuttavia esclude con:
Il numero di argomenti generici forniti non corrisponde all'arità della definizione di tipo generico.
Nome di parametro: instanziazione
ho fatto questo genere di cose in passato e per la vita di me non riesco a capire il motivo per cui questo non sta funzionando in questo caso. (Inoltre ho dovuto Google arity).
Cosa stai passando come 'T' a' CreateDictionaryComparer'? Ho provato a passare 'CreateDictionaryComparer>()' e questo funziona bene per me (usando il compilatore Mono C# versione 1.9.1.0). –
Avevo DictionaryComparer come classe interna a uno che è esso stesso generico. Pensa che stia perdendo i lavori. – dkackman
Solo per curiosità, potresti fornire il campione completo (in mancanza) in modo che possa provarlo sul mio compilatore? –