我很难想出这个问题的标题。这是我描述这个问题的最好方法。
我在这里使用了泛型类名,但重点是相同的。
在名为Common.dll的DLL中,我有一个名为FormControl的类。它显示一个按钮栏和许多表单元素。然后我有一个名为MButtonBar的类。该类包含它显示的MButton对象的集合。
我有两个单独的应用程序将使用FormControl。这些都是相关的应用。但是,在其中一个应用程序中,我希望它创建一个名为XButton的按钮实例,XButton是从MButton派生的。
问题是FormControl创建了按钮栏,按钮栏创建了按钮,所有这些按钮都在Common.dll中,而且不知道XButton。
有没有办法让Common.dll中的按钮栏创建一个XButton实例?使用Activator.CreateInstance或工厂的任何方式。一些优雅的机制,我传入我想要实例化的类名。
另一种解决方案是派生一个新的FormControl并覆盖创建按钮栏方法。然后派生一个新的按钮栏,并从我的派生FormControl创建这种类型的按钮栏。然后在派生的按钮栏中,我可以覆盖创建按钮方法并创建XButton,但这似乎很多工作。