使用反射检查字段属性
本文关键字:字段 属性 检查 反射 | 更新日期: 2023-09-27 18:35:49
>我正在尝试查找类中具有过时属性的字段,
我所做的是,但即使认为该类型具有在迭代过程中找不到的过时属性:
public bool Check(Type type)
{
FieldInfo[] fields = type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var field in fields)
{
if (field.GetCustomAttribute(typeof(ObsoleteAttribute), false) != null)
{
return true
}
}
}
编辑:
class MyWorkflow: : WorkflowActivity
{
[Obsolete("obselset")]
public string ConnectionString { get; set; }
}
并像这样使用它,Check(typeof(MyWorkflow))
问题是ConnectionString
既不是Field
也不是NonPublic
。
您应该更正BindingFlags
,并使用GetProperties
方法搜索属性。
尝试以下操作
public static bool Check(Type type)
{
var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
return props.Any(p => p.GetCustomAttribute(typeof(ObsoleteAttribute), false) != null);
}