簡體   English   中英

在C#中使用反射時如何跳過不需要的屬性

[英]How to skip unwanted properties when using reflection in C#

我正在使用反射來從類中獲取所有屬性,如下所示:

var props = item.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); // todo: cache & filter not-needed props)

var itemStr = string.Join(", ", 
                     props.Select(p => p.GetValue(item, null)?.ToString())
                          .ToArray());

item是對象類型Person的定義如下:

public sealed class Person : KnowYourCustomerBase
{
     [DataMember]
     public string Surname { get; set; }

     [DataMember]
     public string FirstName { get; set; }

     [DataMember]
     public string MiddleName { get; set; }

     [DataMember]
     public string Address4 { get; set; }

     [DataMember]
     public string DateOfBirth { get; set; }

     [DataMember]
     public string NationalID { get; set; }

     [DataMember]
     public string Gender { get; set; }
}

如何編輯獲取所有屬性的代碼行,並返回它們(例如,除NationalID外的所有屬性)?

var toExclude = new HashSet<string>("NationalID", ...);

var props = item.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).
            Where(property => !toExclude.Contains(property.Name));

將...替換為要排除的其他屬性的名稱和Enumerable。此處將僅保留那些不在集合中的屬性。

暫無
暫無

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

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