使用工厂的动态继承

时间:2010-10-11 21:45:13

标签: c# asp.net inheritance factory-pattern

我想我知道答案,但我希望有人有一个简洁的解决方案。我们目前正在使用两种下拉控件(Telerik和.Net)。我希望将这些组合成一个控件,但是在用户友好的设计中挣扎。

理想情况下,控件将在设计文件中创建,其bool属性为“SimpleBox”,以确定要继承哪种控件。然后在代码隐藏设计文件中生成实例化,然后构造函数将动态加载基础(这是不可能的)。简单的解决方案是让我创建一个IDropDown接口,然后让工厂创建正确的接口。唯一真正的问题是每次都必须手动编写实例化,这很麻烦,并且根本不会加速我们的进程。

虽然不可能直接实现,但我正在寻找一个工厂的解决方案,该工厂在对象构造函数中运行,用于根据bool属性设置基础。

干杯

1 个答案:

答案 0 :(得分:4)

您可能希望在此处查看合成/委派而不是继承。

本质上,不是直接扩展任何一个类,而是创建一个扩展Control(或类似的低级别)并实现IDropDown的包装类,为其添加IDropDown字段您想要使用的基础控件实现,并将所有感兴趣的方法调用转发给所选实现。如果有很多方法,这很快就会变得乏味。