使用反射检查字段属性

本文关键字:字段 属性 检查 反射 | 更新日期: 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);
}