0

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

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 并加载另一个位置(在配置文件中设置)。

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

4

1 回答 1

0

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

并且有一些模式 - 代理,装饰器......你选择

于 2013-08-23T15:13:34.140 回答