2010-07-01 61 views
1

我正在使用Oracle.DataAccess.Client数据提供程序客户端。我在构造一个OracleException对象的新实例时遇到了问题,但它一直告诉我没有公共构造函数。我看到其他人有同样的问题,并尝试了他们的解决方案,但他们似乎并没有工作。这里是我的测试代码:如何创建Oracle.DataAccess.Client.OracleException的实例以与NMock配合使用

object[] args = { 1, "Test Message" }; 
ConstructorInfo ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic 
    | BindingFlags.Instance, null, System.Type.GetTypeArray(args), null); 
var e = (OracleException)ci.Invoke(args); 

当调试测试代码时,我总是得到'ci'的NULL值。

有没有Oracle改库不允许这个?我在做什么错了,我需要做些什么来实例化一个用于NMock的OracleException对象?

顺便说一下,我正在使用版本10g的客户端库。

感谢,

查理

回答

0

OracleException在ODP.NET不一样OracleException在微软客户端。 OracleException有5个可由GetConstructors()获取的构造函数信息。

在获得的构造函数列表中,您将看到没有带参数(int,string)的构造函数。那为什么你在ci中获得NULL。

如果给出正确的参数列表,您将拥有适当的ConstructorInfo,并且可以通过Invoke(param)调用构造函数;

但是,OracleException构造函数不是被设计成这样调用的 - 并非所有的字段都会有适当的信息。

2所有: 我需要以下OracleException: ORA-00001唯一约束(string.string)违反 ORA-03113结束文件上的通信信道 ORA-03135:连接失去联系 ORA-12170:TNS :发生连接超时 进行测试。我如何创建它们?