Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET应用程序体系结构允许缺少程序集_C#_.net_.net Assembly - Fatal编程技术网

C# .NET应用程序体系结构允许缺少程序集

C# .NET应用程序体系结构允许缺少程序集,c#,.net,.net-assembly,C#,.net,.net Assembly,我正在搜索正确的装配设置和抽象以解决此问题: 我有一个应用程序使用程序集访问外部系统。现在,此程序集不是在每台计算机上都可用,因为它必须在我的应用程序之前安装(它附带完整的外部系统设置) 当我现在在未安装此外部系统的计算机上启动我的应用程序时,我得到:“FileNotFoundException”(我有一个应用程序.ThreadException处理程序) 我只想“糟糕”地引用该程序集,并且能够在没有它的情况下运行(提供配置、建议和模拟) 我想我必须实现一个包装器,但我不确定从哪里开始。包装器将

我正在搜索正确的装配设置和抽象以解决此问题:

我有一个应用程序使用程序集访问外部系统。现在,此程序集不是在每台计算机上都可用,因为它必须在我的应用程序之前安装(它附带完整的外部系统设置)

当我现在在未安装此外部系统的计算机上启动我的应用程序时,我得到:“FileNotFoundException”(我有一个
应用程序.ThreadException
处理程序)

我只想“糟糕”地引用该程序集,并且能够在没有它的情况下运行(提供配置、建议和模拟)


我想我必须实现一个包装器,但我不确定从哪里开始。包装器将引用真实的程序集还是在可用时使用反射来调用它?

我想您已经回答了您的问题。最好的方法是实现一个“包装器”,它可以从这个程序集中获取对象并利用这个程序集中的具体对象,然后实现一个存根,当找不到此程序集时它将接管

如果实现,则此包装器可以是代理对象,并且当找不到上述程序集时,它应该能够具有一些智能逻辑来切换到不同的具体对象。由于您使用的是c#.net,因此它应该非常简单,只需检查程序集是否存在于特定位置,而无需将检查逻辑捕获到try/catch块中

编辑
顺便说一下,包装器无法引用该程序集,因为该程序集未包含在您的项目中…您正在手动加载不同的程序集。然后,为了实例化此程序集的对象并调用这些对象的方法,您需要使用反射。

您可以处理该事件。当找不到程序集时会调用它,它使您的代码有机会跟踪指定的程序集并将其返回到应用程序域。

感谢您指向模式名称。我相信就是这样。如果有更多的.NET最佳实践,我很高兴能帮上忙……但是当你说“最佳实践”时,你指的是代理模式吗?请注意,您也可以使用不同父级的组合,例如依赖项注入、控制反转、工厂模式等。哪一个最适合您……好吧,这取决于您的项目的结构以及architecture designedIt是一个插件。在.NET中有很多插件方法和框架,谷歌也在使用。