我创建了一个实现 ICustomTypeDescriptor 的通用类 Group。它只是将泛型类型参数的属性添加到自己的属性中。
private void InitializeDisplayedProperties()
{
_DisplayedProperties.Add(TypeDescriptor.GetProperties(typeof(Group<T>))["LastItem"]);
_DisplayedProperties.Add(TypeDescriptor.GetProperties(typeof(Group<T>))["GroupId"]);
_DisplayedProperties.Add(TypeDescriptor.GetProperties(typeof(Group<T>))["Count"]);
foreach (PropertyDescriptor myDescr in TypeDescriptor.GetProperties(typeof(T)))
{
_DisplayedProperties.Add(myDescr);
}
}
为什么以下代码的行为不同?
TypeDescriptor.GetProperties(typeof(Group<IGroupedObject>)).Count //Returns 3 Items of Group only
TypeDescriptor.GetProperties(new Group<IGroupedObject>()).Count //Returns all 31 Items of Group and generic type parameter
我认为这一定与属性是在对象的实例时间生成的事实有关。但是使用的类型不是已经定义了属性的数量吗?
是否可以在不实例化类型的情况下解决此问题?