我正在开发一个基于“网络”的应用,希望能够设计一个更加精通和简便的设计。
For the sake of simplicity, the application exposes a set of operations and events:
- DoSomething()
- DoOtherThing()
- OnError
- OnSuccess
我要向其中一些行动(例如:当事件1起火时, run花1)。
例如:plugin1.HandleError(),
可以通过订阅活动来做到这一点:
this.OnError += new Plugin1().HandleError();
问题是:
- My app doesn t know of the type "Plugin1" (it is a plugin, my app does not reference it directly).
- Doing so will instantiate the plugin before time, something i do not want to do.
在“传统”原始模型中,微粒的“客户”负荷,在某些关键点执行原始代码。 例如,在进行某种手术时,图像处理申请。
客户申请知道何时即刻和何时执行原始代码。
在我的申请中,原始内容是决定何时执行(“原始数据应当登记在网上活动”。)
将原始的“执行”法与“登记”法一起保留,这就产生了一个问题,即原DLL公司在登记时将装上记忆,我希望加以防止。
例如,如果在假冒的DLLL中添加一种登记册方法,则原始的DLL必须装上记忆,以便叫做登记册方法。
What could be a good design solution for this particular issue?
- Lazily loading (or offering lazy/eager loading) of plugin DLLs.
- Allowing plugins to control which various parts of the system/app they hook into.