2009-01-11 10 views
36

Comment puis-je faire ce qui suit en C#? Quelle est la bonne façon d'écrire la première ligne de cet extrait de code?Comment créer un alias pour une classe générique en C#?

using KVP<K, V> = System.Collections.Generic.KeyValuePair<K, V>; 

class C { KVP<int, string> x; } 
+1

comme Eric Lippert a déclaré [ici] (http://stackoverflow.com/q/3720222/303290) "Ceci est une fonctionnalité occasionnellement demandée." qui n'a pas encore été mis en production .. – mbx

Répondre

39

Vous ne pouvez pas, fondamentalement. Vous ne pouvez utiliser les alias fixes, tels que:

using Foo = System.Collections.Generic.KeyValuePair<int, string>; 

class C { Foo x; } 
+7

drat, c'est malheureux – yoyo

1

Dans certains cas, vous pouvez aller avec l'héritage:

public class MyList<T1, T2> : List<Tuple<IEnumerable<HashSet<T1>>, IComparable<T2>>> { } 

public void Meth() 
{ 
    var x = new MyList<int, bool>(); 
} 

Bien que pas dans votre cas particulier, comme KeyValuePair est scellé :-(