Вы всегда можете получить все конструкторы, подобные этому
ConstructorInfo[] all = typeof(OracleException).GetConstructors(
BindingFlags.NonPublic | BindingFlags.Instance);`
Для Oracle.DataAccess
4.112.3.0 это вернуло 7 конструкторов
Тот, который я хотел, был вторым в списке, который принял 5 аргументов, int, string, string, string, int
. Я был удивлен пятым аргументом, потому что в ILSpy это выглядело так
internal OracleException(int errCode, string dataSrc, string procedure, string errMsg)
{
this.m_errors = new OracleErrorCollection();
this.m_errors.Add(new OracleError(errCode, dataSrc, procedure, errMsg));
}
Итак, чтобы получить конструктор, который я хотел, я использовал
ConstructorInfo constructorInfo =
typeof(OracleException).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null,
new Type[] { typeof(int), typeof(string), typeof(string), typeof(string), typeof(int) },
null);`