【发布时间】:2014-04-09 09:42:12
【问题描述】:
在c#编译时有什么方法可以区分非常量字段和常量字段吗?
我目前正在开发 c# 代码分析 (FxCop) 规则来检查开发人员的代码是否存在命名不一致。
我一直在寻找一种只针对常量字段的方法。但是它们在编译时是如何声明的呢?有没有像一个标志(我一直在研究“HasDefault”,但这并没有给我太多信息)。
我正在使用 FxCop-API(FxCopSdk.dll 和 Microsoft.Cci.dll)。不使用反射。
总结:如何使用代码分析(FxCop)区分非常量字段和常量字段,以及如何定位常量。
【问题讨论】:
-
不太清楚你的意思 - 你是不是想通过反射来发现
const int x = 10;和static readonly int x = 10;之间的区别? -
不,我不确定您是否熟悉 Visual Studio 中的代码分析(以前称为 FxCop)。这是一种根据各种规则(例如不正确的命名)检查编译代码的机制。欲了解更多信息:msdn.microsoft.com/en-us/library/3z0aeatx.aspx。我想知道的是如何使用这种机制来定位常量。
-
对我来说听起来更适合 StyleCop,我认为它已经做到了你想要的。私有变量/常量的命名不需要保留在编译的程序集中。
-
StyleCop 确实做到了这一点,但我被命令使用 FxCop 来实现这一点,因为这些规则不太容易被开发人员忽略。此机制还可以阻止程序编译,“强制”开发人员使用定义的标准。
-
@Jon Skeet:使用 FxCop API,没有反射。我也在原始问题中添加了这个,谢谢。
标签: c# constants code-analysis fxcop