我已经创建了新的自定义PropertyDescriptor,如下所示
public class CustomPropertyDescriptor : PropertyDescriptor
{
public CustomPropertyDescriptor (string name, Attribute[] attribute)
: base(name, attribute)
{
}
............
............
}
但是当我尝试使用 DataColumnPropertydescriptor 进行转换时,它无法转换为自定义属性描述符。但它成功地转换为 PropertyDescriptor (不是自定义属性描述符)
有没有可用的解决方案?
答案 0 :(得分:1)
DataColumnPropertydescriptor
不会从您的CustomPropertyDescriptor
继承。它继承自PropertyDescriptor
,对您的自定义类一无所知:
internal sealed class DataColumnPropertyDescriptor : PropertyDescriptor
考虑这种继承,好像Dog
和Cat
都是从Animal
继承的:
public class Dog : Animal
public class Cat: Animal
但是狗不是猫,你不能将Dog
投射到Cat
:
Cat felix = new Cat();
Dog pluto = (Dog)felix; // Of course not working
Animal someAnimal = (Animal)felix; // Cat is animal, so it works
这就是你现在要做的。您只能创建CustomPropertyDescriptor
的新实例并手动复制您拥有的DataColumnPropertydescriptor
实例中的一些数据:
DataColumnPropertydescriptor columnDescriptor = ...
CustomPropertyDescriptor customDescriptor =
new CustomPropertyDescriptor(columnDescriptor.Name, columnDescriptor.Attributes);