je cache basé surComment distinguer MethodBase des génériques
Dictionary<MethodBase, string>
La clé est rendue de MethodBase.GetCurrentMethod. Tout fonctionnait bien jusqu'à ce que les méthodes soient explicitement déclarées. Mais un jour il est apparu que:
Method1<T>(string value)
Makes même entrée dans le dictionnaire lorsque T est absolument différents types. Donc, ma question concerne la meilleure façon de mettre en cache la valeur pour les méthodes génériques. (Bien sûr, je peux fournir un wrapper qui fournit GetCache et l'égalité des types génériques rencontrés, mais cette façon ne semble pas élégante).
Mise à jour Voici ce que je veux exactement:
static Dictionary<MethodBase, string> cache = new Dictionary<MethodBase, string>();
static void Method1<T>(T g)
{
MethodBase m1 = MethodBase.GetCurrentMethod();
cache[m1] = "m1:" + typeof(T);
}
public static void Main(string[] args)
{
Method1("qwe");
Method1<Stream>(null);
Console.WriteLine("===Here MUST be exactly 2 entry, but only 1 appears==");
foreach(KeyValuePair<MethodBase, string> kv in cache)
Console.WriteLine("{0}--{1}", kv.Key, kv.Value);
}
Voulez-vous une entrée de cache différent pour chaque ensemble de paramètres de type ou d'une entrée de cache différent pour chaque morceau physique de code (ma réponse)? – SLaks
Cela semble être impossible. – SLaks