2010-03-10 5 views
2

J'ai une signature constructeur comme celui-ciComment puis-je demander une extension de chaîne à un Func <String>

public NavigationLink(Func<String> getName, 
         Func<UrlHelper, String> getURL, 
         Func<bool> isVisible, 
         IEnumerable<NavigationLink> subItems) 

Dans ce constructeur, je suis déléguant l'getName à une propriété de la classe contenant

GetName = getName 

J'ai une extension de chaîne qui casing sur un appel de chaîne String.CapitalizeWords();

Comment appliquer cette extension au Func?

Merci

Répondre

3

Vous pouvez faire

GetName =() => getName().CapitalizeWords(); 

Mais pourquoi avez-vous besoin d'une fonction sans paramètre, retourne une chaîne au lieu de la chaîne elle-même?

+0

Je n'ai pas écrit ceci. Un des développeurs avec qui je travaille a une chose pour tous ces délégués. Je vais juste/soupir beaucoup. –

+0

Vous n'avez pas besoin d'appeler explicitement le constructeur, c'est-à-dire le wrapper 'new Func '. Juste le lambda est bien. –

+0

Je vais modifier cela. – Jens

0

Il sera là pour les résultats de l'exécution de getName, pas sur getName lui-même. GetName est un délégué à une fonction qui retournera une chaîne; ce n'est pas une chaîne elle-même. Vous devriez être capable de faire String CapName = GetName().CapitalizeWords().

+0

Ya. J'aurais dû me spécialiser cependant que la propriété dans la classe n'est pas de type String mais à la place de Func ./soupir beaucoup? –

+0

ah, gotcha. Les autres gars l'ont vu comme ça, alors vous avez une bonne réponse. Wow, que les gars aiment les délégués, n'est-ce pas? –

0
GetName =() => getName().CapitalizeWords(); 
1

Donc, est-ce la signature de la propriété GetName?

string GetName{get;set;}

Si oui, je suppose que tout ce que vous devez faire est

GetName=getName().CapitalizeWords();

Sinon, si la signature est comme ceci:

Func<string> GetName{get;set;}

vous auriez probablement besoin de faire

GetName=getName; 
string caps = GetName().CapitalizeWords(); 

J'espère avoir compris votre question : P