如何在C#中使用反射时跳过不需要的属性

时间:2016-04-05 07:01:15

标签: c# reflection properties

我使用反射来获取类中的所有属性:

use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $xmlfile = "sample1.xml";
my $xml = new XML::Simple;
my $data = $xml->XMLin($xmlfile);

#print Dumper($data);
print "$data->{company}{title}\n";

item是对象类型Person定义如下:

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());

如何编辑获取所有属性的代码行并返回例如除NationalID之外的所有属性?

1 个答案:

答案 0 :(得分:3)

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

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

将...替换为您要排除的其他媒体资源的名称,Enumerable.Where仅保留不在该集合中的资源。