gpt4 book ai didi

c# - 在 FxCop 自定义规则中使用 SerializationAttribute 检测类

转载 作者:行者123 更新时间:2023-11-30 13:45:59 25 4
gpt4 key购买 nike

我正在尝试编写一个 FxCop 规则来匹配装饰有 Serializable 属性的类,但似乎该属性被忽略了。

例如。给定这个样本类

[Serializable]
[Description]
public class ClassWithSerializableMustHaveSerializableBaseClass : BaseClass
{
}

我原以为我的自定义规则中的这段代码会成功匹配:

    public override ProblemCollection Check(TypeNode type)
{
if (type.Attributes.Any(a => a.Type.FullName == typeof(SerializableAttribute).FullName))
{
var problem = new Problem(GetResolution(), type.SourceContext);

Problems.Add(problem);
}

return Problems;
}

但事实并非如此。如果我将匹配类型更改为 DescriptionAttribute,那么它确实有效。 SerializableAttribute 有什么神奇之处还是我错过了一些明显的东西?

最佳答案

Is there something magical about SerializableAttribute

是的;有许多属性实际上并未作为属性嵌入(即不是“自定义”部分)。一些反射 API 可以欺骗它,使它们看起来在那里,但不是全部,也不是所有时间(例如,这取决于程序集的加载方式)。

例子:

  • [Serializable] - 成为类型的 IL 标志
  • [AssemblyVersion] - 成为程序集标识的一部分
  • [AssemblyFileVersion] - 成为文件标识的一部分

关于c# - 在 FxCop 自定义规则中使用 SerializationAttribute 检测类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825716/

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