卸载并在runTime加载引​​用

时间:2013-08-23 11:09:49

标签: c# oracle

我的dll Oracle.DataAccess有问题:在我的工作站上安装了客户端,在某些服务器上我有另一个客户端。在runTime,我抓住了一个

System.TypeInitializationException: The type initializer for 
'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> 
Oracle.DataAccess.Client.OracleException: The provider is not compatible with the version of Oracle client
    at Oracle.DataAccess.Client.OracleInit.Initialize()
    at Oracle.DataAccess.Client.OracleConnection..cctor()
    --- End of inner exception stack trace ---
    at Oracle.DataAccess.Client.OracleConnection..ctor(String connectionString)

在catch子句中,我想卸载当前的dll并加载其他位置(在配置文件中设置)。

有可能吗?更重要的是,这是解决这个问题的好方法吗?

1 个答案:

答案 0 :(得分:0)

处理它的方法之一 - 抽象你的oracle数据访问。创建两个程序集,每个程序集都引用特定的ODP。确定安装或尝试逐个加载程序集的客户端,直到成功并通过您的界面工作。但关键是,您的客户端软件必须只知道接口,但是ODP通信的实现将被抽象化。

有这样的模式 - 代理,装饰......你选择