How to write a method like string.Format with intellisense support
.net, c#, intellisense, visual-studio
Solution
You cannot make Visual Studio analyze parameter content for you - it simply verifies that code is compilable, and `String.Format` is compilable even if you haven't specified parameters for all placeholders. But you can use Visual Studio add-in (e.g. ReSharper or CodeRush) which analyzes placeholders count for `String.Format` formatting string and verifies parameters count passed to this method.
BTW I'm not using ReSharper but looks like it has support for marking any method as string formatting method - Defining Custom String Formatting Methods. You just should annotate your method with `StringFormatMethodAttribute` attribute:
[StringFormatMethod("formatStr")]
public string MyStringFomratter(string formatStr, params object[] arguments)
{
// Do some checking and apply some logic
return string.Format(formatStr, arguments);
}
Problem
Consider a method to write with a `format` parameter like `string.Format`'s frist parameter. As you know the Intellisense is aware of first parameter's constraints and checks for its consistency with parameters. How can I write such method. As a simple example, consider a wrap of `string.Format` like: ``` public string MyStringFomratter(string formatStr, params object[] arguments) { // Do some checking and apply some logic return string.Format(formatStr, arguments); } ``` How can I say to the compiler or IDE that `formatStr` is something like `string.Format`'s first parameter? So if I have some code like this: ``` var x = MyStringFormatter("FristName: {0}, LastName: {1}", firstName); // This code should generate a warning in the IDE ```