如何使用intellisense支持编写类似string.Format的方法

考虑使用string.Format的frist参数之类的format参数进行写入的方法。 如您所知,Intellisense知道第一个参数的约束并检查其与参数的一致性。 我怎么能写这样的方法。

举个简单的例子,考虑一下string.Format的包装:

 public string MyStringFomratter(string formatStr, params object[] arguments) { // Do some checking and apply some logic return string.Format(formatStr, arguments); } 

我怎么能对编译器或IDE说formatStr就像string.Format的第一个参数?

所以如果我有这样的代码:

 var x = MyStringFormatter("FristName: {0}, LastName: {1}", firstName); // This code should generate a warning in the IDE 

您不能让Visual Studio分析参数内容 – 它只是validation代码是否可编译,即使您没有为所有占位符指定参数,也可以编译String.Format 。 但是您可以使用Visual Studio加载项(例如ReSharper或CodeRush )来分析String.Format格式化字符串的占位符计数并validation传递给此方法的参数计数。

顺便说一下,我没有使用ReSharper,但看起来它支持将任何方法标记为字符串格式化方法 – 定义自定义字符串格式化方法 。 您应该使用StringFormatMethodAttribute属性注释您的方法:

 [StringFormatMethod("formatStr")] public string MyStringFomratter(string formatStr, params object[] arguments) { // Do some checking and apply some logic return string.Format(formatStr, arguments); } 

编译器不会为String.Format发出错误数量的参数警告。 但是,如果您需要智能感知支持,请在方法前面加上/// ,它将创建一个用于记录方法的模板。 填写文档,当您使用该方法时,它将出现在intellisense中。