1

我很难为这个问题想出一个标题。这是我描述这个问题的最佳方法。

我在这里使用了通用类名,但要点是一样的。

在名为 Common.dll 的 DLL 中,我有一个名为 FormControl 的类。它显示一个按钮栏和许多表单元素。然后我有一个名为 MButtonBar 的类。此类包含它显示的 MButton 对象的集合。

我有两个单独的应用程序将使用 FormControl。这些是相关的应用程序。但是,在其中一个应用程序中,我希望它创建一个名为 XButton 的按钮的实例,XButton 是从 MButton 派生的。

问题是FormControl创建了按钮栏,而按钮栏创建了按钮,都在Common.dll中,它不知道XButton。

有没有办法让 Common.dll 中的按钮栏创建 XButton 的实例?使用 Activator.CreateInstance 或工厂的任何方式。一些优雅的机制,我传入要实例化的类名。

另一种解决方案是派生一个新的 FormControl 并覆盖 create button bar 方法。然后派生一个新的按钮栏,并从我派生的 FormControl 中创建这种类型的按钮栏。然后在派生的按钮栏中,我可以覆盖创建按钮方法并创建 XButton,但这似乎需要做很多工作。

4

0 回答 0