Как создать экземпляр Oracle.DataAccess.Client.OracleException для использования с NMock - PullRequest
1 голос
/ 01 июля 2010

Я использую клиент поставщика данных 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);

При отладке тестового кода я всегда получаю значение NULL для 'ci'.

Oracle изменила библиотеку, чтобы запретить это?Что я делаю не так и что мне нужно сделать, чтобы создать экземпляр объекта OracleException для использования с NMock?

Кстати, я использую клиентскую библиотеку для версии 10g.

Спасибо

Чарли

1 Ответ

0 голосов
/ 31 августа 2016

OracleException в ODP.NET отличается от OracleException в клиенте Microsoft.OracleException имеет 5 конструкторов, информацию о которых вы можете получить с помощью GetConstructors ().

В полученном списке конструкторов вы увидите, что нет конструкторов с параметрами (int, string).Вот почему вы получаете NULL в ci.

Если вы дадите правильный список параметров, у вас будет правильный ConstructorInfo и вы сможете вызвать конструктор с помощью Invoke (param);

Однако,Конструктор OracleException не предназначен для такого вызова - не все поля будут иметь правильную информацию.

2Все: мне нужно следующее исключение OracleException: ORA-00001 уникальное ограничение (string.string) нарушило конец файла ORA-03113 в канале связи ORA-03135: соединение потеряно, контакт ORA-12170: TNS: время ожидания соединенияпроизошло для тестирования.Как мне их создать?

...