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

C# 如何使用intellisense支持编写类似string.Format的方法,c#,.net,visual-studio,intellisense,C#,.net,Visual Studio,Intellisense,考虑使用format参数编写的方法,如string.format的第一个参数。正如您所知,Intellisense知道第一个参数的约束,并检查其与参数的一致性。我怎样才能写出这样的方法 作为一个简单的例子,考虑一下字符串的格式。格式< /代码>如下: public string MyStringFomratter(string formatStr, params object[] arguments) { // Do some checking and apply some logic

考虑使用
format
参数编写的方法,如
string.format
的第一个参数。正如您所知,Intellisense知道第一个参数的约束,并检查其与参数的一致性。我怎样才能写出这样的方法

作为一个简单的例子,考虑一下<代码>字符串的格式。格式< /代码>如下:

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

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

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

顺便说一句,我没有使用ReSharper,但它似乎支持将任何方法标记为字符串格式化方法-。您只需使用
StringFormatMethodAttribute
属性对方法进行注释:

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

无法使Visual Studio为您分析参数内容。但您可以使用VisualStudio加载项(例如ReSharper)来验证字符串的参数计数。Format@SergeyBerezovskiyye Resharper只检查String.Format,但我自己的方法呢?有办法吗?@MikeSW实际上我确实认为方法名是硬编码的-ReSharper如何理解我的意图?无论我是传递格式字符串和我将要使用的参数,还是只传递我将要保存到数据库的字符串,以及与之无关的参数string@SergeyBerezovskiy我希望有一个属性可以添加到参数中,并告诉intellisense它是字符串格式。@SergeyBerezovskiy您可能是对的,它似乎不会触发我自己的ToFormat()方法事实上,我正在寻找一种方法来告诉Resharper我的方法参数的行为。我认为像String.Format这样的方法是在Resharper中硬编码的。对不起,这正是我想要的答案。谢谢。当你不再使用resharper时会发生什么?