【发布时间】:2010-12-06 05:38:10
【问题描述】:
我想从匿名方法/委托返回一个字符串值。我怎样才能实现这样的事情:注意这会产生编译时错误:无法将匿名方法转换为类型“字符串”,因为它不是委托类型
StringBuilder sb = new StringBuilder("aaa");
sb.Replace("aaa", delegate()
{
return "bbb";
});
我也在尝试创建一个扩展方法,这样我就可以编写如下代码:
StringBuilder sb = new StringBuilder("aaa");
sb.Replace("aaa", () =>
{
return "bbb";
});
扩展方法的签名是什么?
编辑:
我们有一个大型内部类,它会生成繁琐的 xml 文件。我们希望使该方法更具可读性,而不是其他任何事情。所以我们想去 来自:
StringBuilder sb = new StringBuilder(_repository.GetGenericXml1Template());
sb.Replace("$Placeholder", GetXml1Helper());
private void string GetXml1Helper()
{
StringBuilder sb = new StringBuilder(_repository.GetGenericXml2Template());
sb.replace("$Var1", DB.Var1);
....
return sb.ToString();
}
因此,与其让几十个帮助方法做稍微相似的事情,我们希望至少让代码更具可读性。
收件人:
StringBuilder sb = new StringBuilder(_repository.GetGenericXml1Template());
sb.Replace("$Placeholder", () =>
{
StringBuilder sb = new StringBuilder(_repository.GetGenericXml2Template());
sb.replace("$Var1", DB.Var1);
....
return sb.ToString();
}
);
【问题讨论】:
-
签名将是 Func
,但您为什么要这样做呢?我相信对于您想要实现的任何目标都有更好的解决方案。 -
@Wololo,你检查我的答案了吗...