使用assembly.CreateInstance()时调试构造函数异常

时间:2011-08-26 20:03:34

标签: c# c#-2.0

我正在开发一个应用程序,通过使用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");
        }
    }
}

感谢。

1 个答案:

答案 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来电。