引用可能未加载的单独类库中的方法

已加入
2018年8月6日
留言内容
2
编程经验
10+
你好

我想了解解决这种情况的可能方法...

假设我有一个小学图书馆"classmain.dll"和一个二级图书馆"classsec.dll".

中"classsec.dll",我有公开方法"checkstatus()"它执行一些工作。在里面"classmain.dll",我还有另一种引用或调用的方法"checkstatus()".

但是,在某些情况下,我不希望做的事情包括"classsec.dll"与应用程序一起(可能是客户可选地为其付费的附加模块);除非我明确引用"classsec.dll"在项目中,我无法编译"classmain.dll".

我想实现的是能够别名(或类似)"checkstatus()" method within "classmain.dll"这样我就可以处理适当的错误响应"classsec.dll"不见了;但是,如果"classsec.dll"在运行应用程序时出现,则它将使用该方法代替别名版本"classmain.dll".

希望这足以说明情况。

谢谢
阿努比斯
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,499
地点
悉尼,澳大利亚
编程经验
10+
如果您不希望主程序集依赖于库,则不要使其依赖。这意味着不编写任何明确引用它的代码。您将需要动态加载程序集并使用Reflection调用其包含的功能。您可能需要有关实现插件系统的信息,因为这是您需要做的事情。它可能不需要太笼统,但可以应用许多相同的原理。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
如果您不想推出自己的插件系统,请考虑使用MEF(托管扩展框架)。

但是,即使您使用自己的插件系统,也应该真正遵循插件的“ L”,“ I”和“ D” 固体 面向对象的编程原理。这意味着针对接口而不是具体对象进行编程,以便您可以将不做任何事情的插件与实际的插件一起使用。 (也可以看看 空对象模式
 
最佳 底部