我创建了一个通用基类,用于跟踪具有通用基础的特定表单类型的开放表单(路由器)。当我需要从派生路由器类调用唯一的派生表单方法时出现问题。反正有没有这样做? 表单路由器基类有 字典(字符串,表格) 派生表单路由器需要调用存储在此字典中的派生表单的唯一方法。问题是visual studio将字典中的类型视为基本表单类,而不是派生表单类(但如果我在运行时执行get类型,则该对象属于派生表单类)。
我尝试过创建可覆盖的属性和函数,但必须在基类中指定类型,并且只使用" Object"不起作用。
如果需要,我可以发布代码,但我试图保持这种简单和通用。 谢谢!
答案 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)
在基类中创建一个受保护的可覆盖(虚拟)方法,该方法接受您需要发送到派生类的数据,并返回您需要从派生类获取的数据,然后在派生类中重写它(继承) )上课并做你需要的。