我尝试使用以下方法获取对象属性:
PropertyInfo[] p = typeof(Myobj).GetProperties()
但我只收到
{System.Reflection.PropertyInfo[0]}
我的对象如下:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
class Myobj
{
public Subobj1 sub1= new Subobj1();
public Subobj2 sub2= new Subobj2();
//...
}
我做错了什么?
答案 0 :(得分:3)
尝试创建真实属性。您正在创建字段。
[StructLayout(LayoutKind.Sequential, Pack = 1)]
class Myobj
{
public Subobj1 Sub1 {get; set;}
public Subobj2 Sub2 {get; set;}
}
答案 1 :(得分:1)
那是因为sub1
和sub2
不是属性,而是字段。将您的类声明更改为以下内容:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
class Myobj
{
public Subobj1 sub1 {get; set; }
public Subobj2 sub2 {get; set; }
...
}
使用构造函数中的新对象初始化属性。
或者,您可以尝试使用GetFields
方法,但这不是一个好方法。
答案 2 :(得分:0)
sub1
和sub2
是字段而非属性。尝试声明
public Subobj1 sub1 { get; set; }
public Subobj2 sub2 { get; set; }
public Myobj()
{
sub1 = new Subobj1();
sub2 = new Subobj2();
}
如果您不想将字段更改为属性,可以使用typeof(Myobj).GetFields();
答案 3 :(得分:0)
[StructLayout(LayoutKind.Sequential, Pack = 1)]
class Myobj
{
public Myobj() {
sub1 = new Subobj1();
sub2 = new Subobj2();
}
public Subobj1 sub1 { get; set; }
public Subobj2 sub2 { get; set; }
}