[英]Get object properties in C#
我嘗試使用以下方法獲取對象屬性:
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();
//...
}
我究竟做錯了什么?
嘗試創建真實屬性。 您正在創建字段。
[StructLayout(LayoutKind.Sequential, Pack = 1)]
class Myobj
{
public Subobj1 Sub1 {get; set;}
public Subobj2 Sub2 {get; set;}
}
這是因為sub1
和sub2
不是屬性,而是字段。 將類聲明更改為以下內容:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
class Myobj
{
public Subobj1 sub1 {get; set; }
public Subobj2 sub2 {get; set; }
...
}
並在構造函數中使用新對象初始化屬性。
(可選)您可以嘗試改用GetFields
方法,但這不是一個好方法。
sub1
和sub2
是不是屬性的字段。 嘗試聲明
public Subobj1 sub1 { get; set; }
public Subobj2 sub2 { get; set; }
public Myobj()
{
sub1 = new Subobj1();
sub2 = new Subobj2();
}
如果您不想將字段更改為屬性,則可以使用typeof(Myobj).GetFields();
[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; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.