c#-编译时的常量字段

有没有办法在c#中的编译时区分非常数字段和常数字段?

我目前正在开发c#代码分析(FxCop)规则,以检查开发人员的代码在命名方面的不一致.

我一直在寻找一种仅针对常量字段的方法.但是在编译时如何声明它们?是否有一个标志(我一直在研究“ HasDefault”,但这并没有给我太多信息).

我正在使用FxCop-API(FxCopSdk.dll& Microsoft.Cci.dll).不使用反射.

总结:如何使用Code Analysis(FxCop)区分非常数字段和常数字段,以及如何定位常数.

解决方法:

进一步研究您提到的FxCop SDK,即字段IsLiteral,它基本上表示在编译时指定值的成员.

这对您有用吗?

例如

    public class ClassFieldNamePrefixes : BaseIntrospectionRule
    {
        public ClassFieldNamePrefixes() :
            base("ClassFieldNamePrefixes", "TutorialRules.TutorialRules",
                typeof (ClassFieldNamePrefixes).Assembly)
        {
        }

        public override ProblemCollection Check(Member member)
        {
            if (!(member.DeclaringType is ClassNode))
                return this.Problems;

            Field fld = member as Field;
            if (fld == null)
                return this.Problems;

            if (fld.IsLiteral && 
                fld.IsStatic && 
                field.Flags.HasFlag(FieldFlags.HasDefault))
            {
            ....
            }

            return this.Problems;
        }
    }
上一篇:javascript-从jquery访问CSS块的属性


下一篇:PHP:为什么ERROR常量会产生错误?