考虑使用string.Format的frist参数之类的格式参数进行写入的方法.如您所知,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分析参数内容 – 它只是验证代码是否可编译,即使您没有为所有占位符指定参数,也可以编译String.Format.但是您可以使用Visual Studio加载项(例如
ReSharper或
CodeRush)分析占位符计数String.Format格式化字符串并验证传递给此方法的参数计数.
BTW我没有使用ReSharper,但看起来它支持将任何方法标记为字符串格式化方法 – Defining Custom String Formatting Methods.您应该使用StringFormatMethodAttribute属性注释您的方法:
[StringFormatMethod("formatStr")] public string MyStringFomratter(string formatStr,arguments); }
原文地址:https://www.jb51.cc/csharp/243414.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。