gpt4 book ai didi

c# - 编译时常量域

转载 作者:行者123 更新时间:2023-11-30 16:12:28 26 4
gpt4 key购买 nike

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

我目前正在开发 C# 代码分析 (FxCop) 规则来检查开发人员的代码是否存在命名不一致的情况。

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

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

总结:如何使用代码分析 (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;
}
}

关于c# - 编译时常量域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com