如何将String扩展应用于Func <string> </string>

时间:2010-03-10 16:10:33

标签: c# extension-methods func

我有像这样的构造函数签名

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

在构造函数中,我将getName分配给包含类的属性

GetName = getName

我有一个字符串扩展,它在字符串上调用String.CapitalizeWords();

如何将该扩展应用于Func?

由于

4 个答案:

答案 0 :(得分:3)

你可以做到

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

但为什么你需要一个无参数函数,返回一个String而不是String本身?

答案 1 :(得分:1)

这是GetName属性的签名吗?

string GetName{get;set;}

如果是这样,我想你需要做的就是

GetName=getName().CapitalizeWords();

否则,如果签名是这样的:

Func<string> GetName{get;set;}
你可能需要做

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

我希望我理解你的问题:P

答案 2 :(得分:0)

它将存在运行getName的结果,而不是getName本身。 GetName是一个函数的委托,它将返回一个字符串;它本身不是一个字符串。您应该能够String CapName = GetName().CapitalizeWords()

答案 3 :(得分:0)

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