1

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

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 是否已将库更改为不允许这样做?我做错了什么,我需要做什么来实例化一个 OracleException 对象以与 NMock 一起使用?

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

谢谢,

查理

4

1 回答 1

0

ODP.NET 中的 OracleException 与 Microsoft 客户端中的 OracleException 不同。OracleException 有 5 个构造函数信息,您可以通过 GetConstructors() 获取。

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

如果您提供正确的参数列表,您将拥有正确的 ConstructorInfo 并且能够通过 Invoke(param); 调用构造函数;

但是,OracleException 构造函数并非设计为像这样调用 - 并非所有字段都有正确的信息。

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

于 2016-08-31T09:15:19.670 回答