簡體   English   中英

C#反射方法GetProperties(BindingFlags.Instance)不返回子類對象

[英]C# Reflection method GetProperties(BindingFlags.Instance) not returning child class objects

我試圖在省略原始類型的同時檢索對象的子類。

   public class Dog
    {
    public int Id {get;set;}
    public int Name {get;set;}
    public Breed Breed {get;set;}
    }

var dog = new Dog(); var children = dog.GetType().GetProperties(BindingFlags.Instance);

為什么 children 數組不包含品種屬性?

通過僅提供BindingFlags.Instance ,您根本無法獲得任何屬性,因為您沒有發送任何訪問修飾符謂詞。

根據您的需要,將這些標志與按位 OR 運算符|結合使用

您可以在此處找到文檔: https : //docs.microsoft.com/en-us/dotnet/api/system.reflection.bindingflags?view=netframework-4.8

var children = dog.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);

編輯:

不幸的是,枚舉沒有根據屬性值類型過濾屬性的任何值。 為了使其成為一個完整的答案,對僅包含Breed屬性的數組的過濾由@const-phi 提供:

var result = children.Where(c => c.PropertyType.IsClass).ToArray(); // Const Phi 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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