簡體   English   中英

在C#中獲取對象屬性

[英]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;}
}

這是因為sub1sub2不是屬性,而是字段。 將類聲明更改為以下內容:

[StructLayout(LayoutKind.Sequential, Pack = 1)]
    class Myobj
    {
        public Subobj1 sub1 {get; set; }
        public Subobj2 sub2 {get; set; }

...
    }

並在構造函數中使用新對象初始化屬性。

(可選)您可以嘗試改用GetFields方法,但這不是一個好方法。

sub1sub2是不是屬性的字段。 嘗試聲明

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM