我正在开发一个应用程序,通过使用assembly.CreateInstance()
创建许多具有标准构造函数的对象,这些对象都按预期工作。
然而,当构造函数引发异常然后在调用代码中将TargetInvocationException
作为InnerException
属性集引发时,会出现复杂性。
有没有办法让Visual Studio调试异常,就像我直接调用构造函数一样?
我正在考虑暂时根据类型名称将其设置为切换块,但是当对象位于不同的(未引用的)程序集中时,这将无济于事。
示例代码:
namespace CreateInstanceTest {
public static class Program {
[STAThread]
public static void Main() {
Type testType = typeof(TestClass);
TestClass test = (TestClass)testType.Assembly.CreateInstance(testType.FullName, false, System.Reflection.BindingFlags.CreateInstance, null, new object[] { "value" }, null, null);
}
}
public class TestClass {
public TestClass(string param) {
throw new Exception("My exception");
}
}
}
感谢。
答案 0 :(得分:0)
为了进行调试,我最终使用了类似的东西:
BuildAction action = null; //(BuildAction)actionType.Assembly.CreateInstance(actionType.FullName, true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { subReader, format }, null, null);
switch (actionType.Name) {
case "SetVariable":
action = new Actions.SetVariable((XmlReader)subReader, format);
break;
case "DisplayMessage":
action = new Actions.DisplayMessage((XmlReader)subReader, format);
break;
}
绕过动态CreateInstance
来电。