你总是可以像这样得到所有的构造函数
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);`