在对象转换为基类的对象上调用派生类方法

时间:2016-08-15 17:48:06

标签: c# reflection

我有一个基类Element和一个派生类ViewSheet。当我收集所有ViewSheet个对象时,它们被收集器方法强制转换为Element。现在我需要在名为ViewSheet.get_Parameter()的每个对象上调用一个方法。该方法仅存在于派生类中,因此无法在Element上调用。

我可以通过调用Element.GetType()找出派生类型是什么,但是我怎样才能将该对象实际转换为ViewSheet然后调用它上面的ViewSheet.get_Parameter()

由于这种情况发生了很多,我需要实现某种可以接受不同基类+派生类组合的泛型方法。任何想法将不胜感激。

收集方法示例:

`ICollection<Element> allElements = 
    new FilteredElementCollector(activeDoc)
    .OfCategory(someCategory)
    .WhereElementIsNotElementType()
    .ToElements();

这总是返回Element的对象集合,因为那是我正在处理的所有对象的基类。我可以在那个系列中做一个Linq演员,但我需要知道根据我的类别,我会收集特定类型的对象,我现在一开始就没有。只有当我实际收集所有Element个对象并致电GetType()时,我才知道我正在处理的是什么类型。

1 个答案:

答案 0 :(得分:0)

你正在打破各种好的设计和OOP规则试图做你正在做的事情。如果要使用&#34;基类&#34;,它应该包含派生类需要实现的所有虚方法。如果它没有,那么你的&#34;基类&#34;在层次结构上太低了。