2010-08-09 28 views
2

Je convertis des parties d'un article de projet de code (http://www.codeproject.com/KB/linq/auto-logging-data-context.aspx) en VB.Net pour mes propres utilisations, mais j'ai rencontré un morceau de code C# écrit d'une manière que je n'avais jamais vue auparavant et que je n'ai pas savoir comment convertir:Le dictionnaire C# n'a pas d'option de type de valeur?

private static Dictionary<type,> _cachedIL = new Dictionary<type,>(); 

Pour moi, cela ressemble à une déconnexion de dictionnaire sans aucun type spécifié pour la valeur. Plus tard dans le même bloc de code l'auteur retourne ce que je crois est un délégué qui fait quelque chose qui ressemble syntaxiquement similaire:

return ((Func<t,>)myExec)(myObject); 

Toute aide à comprendre ce qui se passe ici et comment conver à VB.Net serait le plus apprécié.

+0

Avez-vous ajouté une question ou un commentaire directement sous l'article? Il semble être une erreur de rendu HTML (peut-être). – ja72

Répondre

1

Quelques lignes plus bas:

Delegate myExec = null; 
if (!_cachedIL.TryGetValue(typeof(T), out myExec)) 

de cela, il était censé être

private static Dictionary<type, Delegate> _cachedIL 
     = new Dictionary<type,Delegate >(); 

Je pense qu'il était juste un problème de formatage.

2

Le code en question n'est pas un code valide, il n'y a aucun moyen de le convertir. C'est soit une erreur de la part de l'auteur, soit l'auteur se concentre sur un autre aspect et c'est du pseudo-code.

+0

Merci. Je suppose que cela explique ma confusion :) – Peter

0

L'auteur de l'article n'a peut-être pas mis en forme le code correctement et, en tant que tel, le moteur de rendu codeproject a masqué les lignes avec des caractères <>. Il semble qu'il y ait d'autres problèmes à part ça. Mieux que je peux dire le code doit se lire:

private static Dictionary<Type, Delegate> _cachedIL = new Dictionary<Type, Delegate>(); 

et

return ((Func<T, T>)myExec)(myObject);