从基类调用派生类(VB.NET)

时间:2015-09-11 17:40:52

标签: vb.net oop

我创建了一个通用基类,用于跟踪具有通用基础的特定表单类型的开放表单(路由器)。当我需要从派生路由器类调用唯一的派生表单方法时出现问题。反正有没有这样做? 表单路由器基类有 字典(字符串,表格) 派生表单路由器需要调用存储在此字典中的派生表单的唯一方法。问题是visual studio将字典中的类型视为基本表单类,而不是派生表单类(但如果我在运行时执行get类型,则该对象属于派生表单类)。

我尝试过创建可覆盖的属性和函数,但必须在基类中指定类型,并且只使用" Object"不起作用。

如果需要,我可以发布代码,但我试图保持这种简单和通用。 谢谢!

3 个答案:

答案 0 :(得分:0)

您是否尝试过投射它们? (未经测试)

Form form;
if(form is DerivedForm)
    (form as DerivedForm).DerivedField = "asdf";
Form form;
if(form is DerivedForm)
    ((DerivedForm)form).DerivedField = "asdf";

答案 1 :(得分:0)

将字典中的值转换为派生类型:

Dim frmDerivedForm As YourDerivedForm = CType(yourDictionary("yourKey"), YourDerivedForm)

frmDerivedForm.DerivedFormMembers()

答案 2 :(得分:0)

在基类中创建一个受保护的可覆盖(虚拟)方法,该方法接受您需要发送到派生类的数据,并返回您需要从派生类获取的数据,然后在派生类中重写它(继承) )上课并做你需要的。