我使用的是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‘的空值。
Oracle是否已将库更改为不允许这样做?我做错了什么,我需要做什么来实例化一个用于NMock的OracleException对象?
顺便说一下,我使用的是10g版本的客户端库。
谢谢,
查利
发布于 2016-08-31 17:15:20
ODP.NET中的OracleException与微软客户端中的OracleException不同。OracleException有5个构造函数,您可以通过GetConstructors()获取它们的信息。
在获得的构造函数列表中,您将看到没有带参数(int,string)的构造函数。这就是为什么你在ci中得到NULL的原因。
如果你给出了正确的参数列表,你将拥有正确的参数,并且能够通过调用( ConstructorInfo )来调用构造函数;
然而,OracleException构造函数并不是被设计成这样调用的--并不是所有的字段都会有正确的信息。
2All:我需要以下OracleException: ORA-00001唯一约束(string.string)在通信通道上违反ORA-03113文件结束ORA-03135:连接丢失联系ORA-12170: TNS:连接超时发生测试。如何创建它们?
https://stackoverflow.com/questions/3160103
复制相似问题