是否可以使以下示例与SmartFormat.NET一起使用?
void Main()
{
Dictionary<string,string> ps = new Dictionary<string, string>();
ps["Name"] = "Niels";
Smart.Format("{Name.Foo} is my name", ps).Dump();
}
public static class Extensions
{
public static string Foo(this string bar)
{
return bar.ToUpper();
}
}
这将在LinqPad中返回“是我的名字”。我希望它返回“NIELS是我的名字”。我只使用ToUpper作为一个简单的例子。
答案 0 :(得分:4)
目前无法在SmartFormat
格式括号内调用扩展程序。
要提供此类功能,SmartFormat
必须在项目的所有程序集中查找string
的扩展方法,如in this thread所述。
正如project documentation中所述,您可以直接在格式大括号中使用 也许 另一种方法是在格式化字符串ToUpper()
方法,就像这样(因为该方法不带任何参数):< / p>
Smart.Format("{Name.ToUpper} is my name", ps).Dump();
SmartFormat
开发人员将来应该引入大/小写格式说明符,因为很多人都在寻找这样的东西。然而,对于他们来说这将是一个相当大的挑战,因为ToUpper()
和ToLower()
调用似乎总是比任何其他实现或语法糖更快。
Smart.Format("{0} is my name", ps["Name"].Foo()).Dump();
答案 1 :(得分:0)
不会返回是我的名字,无法在SmartFormart.NET中调用扩展名方法