[英]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.