我试图在类中找到一个具有Obsolete属性的字段,
我所做的是,但是甚至认为该类型具有在迭代期间未找到的obselete属性:
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))
答案 0 :(得分:3)
问题是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);
}