如何将DataColumnPropertyDescriptor强制转换为自定义属性描述符?

时间:2015-10-13 09:22:56

标签: c# .net winforms

我已经创建了新的自定义PropertyDescriptor,如下所示

public class CustomPropertyDescriptor : PropertyDescriptor
    {       


        public CustomPropertyDescriptor (string name, Attribute[] attribute)
            : base(name, attribute)
        {

        }

         ............

         ............
}

但是当我尝试使用 DataColumnPropertydescriptor 进行转换时,它无法转换为自定义属性描述符。但它成功地转换为 PropertyDescriptor (不是自定义属性描述符)

有没有可用的解决方案?

1 个答案:

答案 0 :(得分:1)

DataColumnPropertydescriptor不会从您的CustomPropertyDescriptor继承。它继承自PropertyDescriptor,对您的自定义类一无所知:

internal sealed class DataColumnPropertyDescriptor : PropertyDescriptor 

考虑这种继承,好像DogCat都是从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);