如何从C#中的FieldInfo获取属性?
我有这个方法,想从FieldInfos获取所有属性?如何得到它如何从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;
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所说,您可能混淆了属性和字段。