2010-07-01 20 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 :發生連接超時 進行測試。我如何創建它們?

相關問題