0

我有一个“员工”类,它有以下成员:

//[membername,type]
[Name,string]
[DOB,DateTime]
[DateOfHire,DateTime]
[TerminationDate,DateTime?]
[AddressChanges,List<string>]

在这里,我需要反映并获取除集合类型之外的所有属性。

在此示例中,除了 AddressChanges,我需要获取所有成员。

谢谢。

4

2 回答 2

3

根据你所说的“收藏”的意思,这样的事情会起作用:

var notCollectionProperties =
    typeof(Employee)
        .GetProperties(BindingFlags.Public|BindingFlags.Instance)
        .Where(prop => !typeof(ICollection).IsAssignableFrom(prop.PropertyType));

更一般地,您可能想要使用IEnumerable而不是ICollection.

于 2012-09-07T11:22:02.173 回答
0

使用反射枚举属性并排除具有集合类型的属性。例如:

Type myType = typeof(TargetClass);
foreach(PropertyInfo propertyInfo in myType.GetProperties())
{
    if(propertyInfo.PropertyType is ...)
    {
        // Handle cases 
    }    
}
于 2012-09-07T11:18:30.583 回答