我的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并加载其他位置(在配置文件中设置)。
有可能吗?更重要的是,这是解决这个问题的好方法吗?
答案 0 :(得分:0)
处理它的方法之一 - 抽象你的oracle数据访问。创建两个程序集,每个程序集都引用特定的ODP。确定安装或尝试逐个加载程序集的客户端,直到成功并通过您的界面工作。但关键是,您的客户端软件必须只知道接口,但是ODP通信的实现将被抽象化。
有这样的模式 - 代理,装饰......你选择