簡體   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