【问题标题】:How to skip unwanted properties when using reflection in C#在 C# 中使用反射时如何跳过不需要的属性
【发布时间】:2016-04-05 07:01:15
【问题描述】:

我正在使用反射从类中获取所有属性,如下所示:

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 之外的所有属性?

【问题讨论】:

    标签: c# reflection properties


    【解决方案1】:
    var toExclude = new HashSet<string>("NationalID", ...);
    
    var props = item.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).
                Where(property => !toExclude.Contains(property.Name));
    

    将 ... 替换为您要排除的其他属性的名称,Enumerable.Where 将只保留那些不在集合中的属性。

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多