Cómo escribir un método como string.Format con soporte intellisense

Considere un método para escribir con un parámetro de format como string.Format ‘s frist parameters. Como saben, Intellisense es consciente de las restricciones del primer parámetro y verifica su consistencia con los parámetros. ¿Cómo puedo escribir tal método.

Como ejemplo simple, considere una envoltura de string.Format como:

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

¿Cómo puedo decirle al comstackdor o al IDE que formatStr es algo así como el primer parámetro de string.Format ?

Así que si tengo un código como este:

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

No puede hacer que Visual Studio analice el contenido de los parámetros por usted, simplemente verifica que el código sea comstackble y String.Format es comstackble incluso si no ha especificado parámetros para todos los marcadores de posición. Pero puede usar el complemento de Visual Studio (por ejemplo, ReSharper o CodeRush ) que analiza el conteo de los marcadores de posición para la String.Format formato String.Format y verifica el conteo de parámetros que se pasó a este método.

Por cierto, no estoy usando ReSharper pero parece que tiene soporte para marcar cualquier método como método de formato de cadena – Definición de métodos de formato de cadena personalizados . Solo debes anotar tu método con el atributo StringFormatMethodAttribute :

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

El comstackdor no emite una advertencia para String.Format con un número incorrecto de parámetros. Sin embargo, si desea soporte de inteligencia, preceda a su método con /// y creará una plantilla para documentar el método. Complete la documentación y aparecerá en la inteligencia cuando use el método.