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时会发生什么?