我有一个名为 的属性SearchableAttribute
,它标记类的属性。但是,仅string
允许使用此属性标记类型的[Searchable]
属性。为了限制它,我正在尝试编写一个 CodeAnalysis 规则来分析我的类的属性,检查属性是否存在[Searchable]
并创建一个Problem
if 属性的类型不是string
。
到目前为止,这是我在 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
并将属性的类型与字符串进行比较。没有干净优雅的解决方案吗?