繁体   English   中英

比较FxCop TypeNode与System.Type

[英]Compare FxCop TypeNode to System.Type

我有一个名为SearchableAttribute的属性,该属性标记了类的属性。 但是,只允许使用此[Searchable]属性标记string类型的属性。 为了限制它,我试图编写一个CodeAnalysis规则,该规则分析类的属性,检查[Searchable]属性的存在,如果属性的类型不是string ,则创建一个Problem

到目前为止,这是我在Rule类中拥有的:

public override ProblemCollection Check(Member member) {
    PropertyNode property = member as PropertyNode;
    if (property == null) {
        return null;
    }

    if (property.Attributes.Any(a => a.Type.FullName.Equals((typeof(SearchableAttribute)).FullName)
            && !property.Type.FullName.Equals((typeof(string)).FullName)) {
        Resolution resolution = getResolution(property);
        Problem problem = new Problem(resolution);
        Problems.Add(problem);
    }

    return Problems;
}

尽管这确实有效,但我无法相信...不,我不想相信我真的必须比较类型的全名。 我无法弄清楚如何正确地检查SearchableAttribute是否存在并将属性的类型与字符串进行比较。 有没有干净优雅的解决方案?

Microsoft.FxCop.Sdk.FrameworkTypes.String应该可以解决问题。

FWIW,框架类型与其FxCop TypeNode之间没有真正的桥梁。 所有映射都需要根据名称创建,理想情况下,名称应包含程序集的完全限定名称。 FrameworkTypes属性基本上为您提供了访问FxCop框架为您预先创建的此类映射的快捷方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM