Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从C#中的FieldInfo获取属性?_C#_.net_Winforms_Reflection - Fatal编程技术网

如何从C#中的FieldInfo获取属性?

如何从C#中的FieldInfo获取属性?,c#,.net,winforms,reflection,C#,.net,Winforms,Reflection,我有这个方法,想从FieldInfos获取所有属性?如何得到它 private static void FindFields(ICollection<FieldInfo> fields, Type t) { var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly;

我有这个方法,想从FieldInfos获取所有属性?如何得到它

  private static void FindFields(ICollection<FieldInfo> fields, Type t)
  {
     var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly;

     foreach (var field in t.GetFields(flags))
     {
        fields.Add(field);
     }

     var baseType = t.BaseType;
     if (baseType != null)
     {
        FindFields(fields, baseType);
     }
  }

     var fields = new Collection<FieldInfo>();
     FindFields(fields, this.GetType());
私有静态void FindFields(ICollection字段,类型t)
{
var flags=BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly;
foreach(t.GetFields中的var字段(标志))
{
字段。添加(字段);
}
var baseType=t.baseType;
if(baseType!=null)
{
FindFields(字段、基本类型);
}
}
var fields=新集合();
FindFields(字段,this.GetType());
谢谢


致以最诚挚的问候。

要获取特定对象的字段值,请使用
GetValue
并传递要获取其值的对象

var fields = new Collection<FieldInfo>();
FindFields(fields, this.GetType()); 

foreach (var field in fields)
{
    Console.WriteLine( "{0} = {1}", field.Name , field.GetValue(this));
}
var fields=新集合();
FindFields(字段,this.GetType());
foreach(字段中的变量字段)
{
WriteLine(“{0}={1}”,field.Name,field.GetValue(this));
}

可能您混淆了属性和字段。您想要方法中收集的字段所支持的属性的
PropertyInfo
s,还是想要所有这些字段的值?我想要所有这些字段的值,如.Text、.Name、.Size等…是否要使用反射来获取所有字段,然后使用反射获取每个FieldInfo上的所有属性并显示值?正如Martinho所说,您可能混淆了属性和字段。