Как применить расширение String к Func <String> - PullRequest
2 голосов
/ 10 марта 2010

У меня есть подпись конструктора, подобная этой

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

Внутри этого конструктора я присваиваю getName свойству содержащего класса

GetName = getName

У меня есть расширение строки, которое обрабатывает строковый вызов String.CapitalizeWords ();

Как применить это расширение к Func?

Спасибо

Ответы [ 4 ]

3 голосов
/ 10 марта 2010

Вы могли бы сделать

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

Но зачем вам функция без параметров, возвращающая строку вместо самой строки?

1 голос
/ 10 марта 2010

Так это подпись для свойства GetName?

string GetName{get;set;}

Если это так, я думаю, все, что вам нужно сделать, это

GetName=getName().CapitalizeWords();

В противном случае, если подпись такая:

Func<string> GetName{get;set;}

вам, вероятно, нужно сделать

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

Надеюсь, я понял ваш вопрос: P

0 голосов
/ 10 марта 2010
GetName = () => getName().CapitalizeWords();
0 голосов
/ 10 марта 2010

Он будет там для результатов запуска getName, а не для самого getName. GetName является делегатом функции, которая будет возвращать строку; это не сама строка. Вы должны быть в состоянии сделать String CapName = GetName().CapitalizeWords().

...