我喜欢的String.Format如何使用论据,以它格式化字符串注入变量。 这就是所谓的复合格式化,并通过MSDN讨论这里 。
我想用我的日志门面此功能:
string foo = "fancy";
string bar = "message";
log.Debug("My {0} log {1}.", foo, bar)
我ILoggerFacade有以下方法签名:
void Debug<T>(T message, params Object[] args);
而且,我知道我可以很简单地实现这一点:
ILog m_Log = \\some logging implementation
public void Debug<T>(T message, params Object[] args)
{
m_Log.Debug(String.Format(message, args));
}
然而,在Visual Studio中我没有得到的{0},{1},...参数看中高亮:
我想这是ReSharper的是谁resposible他们,现在看来似乎只是忽略了格式化参数,并没有给出“智能感知”的帮助。 这不是因为谁将会使用门面将期待这其他开发好。
如何获取参数的高亮和“智能感知”自定义格式的方法类似,这些如何工作:
Console.WriteLine(...)
String.Format(...)
etc...
任何帮助,将不胜感激。
退房ReSharpers 外部注解 。 具体而言,要使用StringFormatMethodAttribute这一点。
使用外部注解居然有3种方法。 二,它阐述了,和一个你有字里行间看到的。
参考 “JetBrains.Annotations.dll”。 我不推荐这一个。 我不喜欢复制DLL,或者具有参考ReSharper的安装目录的想法。 这可能会导致问题,如果您升级或重新安装。
复制和粘贴属性声明到您的解决方案。 我建议这个,因为它给你更多的控制权。 此外,你可以摆脱ReSharper的(为什么会有人这样做?奇怪的事情已经发生了,我猜。),并仍然提供此功能的人,消耗你的图书馆。 有一步一步的指示,如何做到这一点的第一个链接。
创建一个XML文件,类似于它使用的.NET程序集。 我这样做是为Silverlight的单元测试框架。 ReSharper的默认不承认这些测试。
去做这个
- 创建一个文件名为
<assembly>.xml
并把它放在“ReSharper的\ VXX \ BIN \ ExternalAnnotations”。 - 添加一个根元素
"<assembly name="<assembly>">
- 现在添加
<member>
为你想给一个属性的每个成员的元素。
我不建议这样做对你自己的代码。 但是,如果你有,你想拥有这个功能,但不能编辑装配,这是做它的方式。 这将只适用于您的计算机,并使用该组件将需要复制的xml文件每个开发上。
文章来源: How do I make my own method similar to String.Format using Composite Formatting in C#