2010-07-01 3 views
1

Oracle.DataAccess.Client 데이터 공급자 클라이언트를 사용하고 있습니다. OracleException 객체의 새 인스턴스를 생성하는 데 문제가 있습니다. 그러나 공용 생성자가 없다는 것을 계속 알려줍니다. 다른 사람들도 같은 문제를 겪고 해결책을 찾았지만 효과가없는 것 같습니다. 여기에 내 테스트 코드가있다 :NMock과 함께 사용할 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에서 라이브러리가 이것을 허용하지 않도록 변경 했습니까? 내가 잘못하고있는 일과 NMock에서 사용할 OracleException 객체를 인스턴스화하기 위해해야 ​​할 일은 무엇입니까?

그건 그렇고, 나는 10g 버전의 클라이언트 라이브러리를 사용하고 있습니다.

감사합니다,

찰리 마이크로 소프트 클라이언트에서 OracleException과 동일하지 ODP.NET에서

답변

0

OracleException. OracleException에는 GetConstructors()로 얻을 수있는 5 개의 생성자 정보가 있습니다.

생성자 목록에서 매개 변수 (int, string)를 가진 생성자가 없음을 알 수 있습니다. 그게 왜 당신이 CS에서 NULL을 얻는 지.

적절한 매개 변수 목록을 제공하면 적절한 ConstructorInfo를 가지며 Invoke (param)에 의해 생성자를 호출 할 수 있습니다.

그러나 OracleException 생성자는 이와 같이 호출하도록 설계되지 않았으므로 모든 필드가 적절한 정보를 가지지는 않습니다.

2All : 내가 OracleException 다음 필요 : ORA-00001 고유 제한 조건 (string.string)을 위반 ORA-03113 파일 끝 통신 채널 ORA-03135에 : 연결이 끊어 ORA-12170 : TNS : 테스트를 위해 연결 시간 초과가 발생했습니다. 어떻게 만들 수 있습니까?

관련 문제