好吧,我承认这个代码对你来说看起来很奇怪,那是因为这很奇怪。这只是重现行为的代码,而不是我想要使用的代码。无法捕捉异常来自Activator.CreateInstance
class Program
{
static void Main(string[] args)
{
try
{
Activator.CreateInstance(typeof(Func<int>), new object[] { new object(), IntPtr.Zero });
}
catch
{
Console.WriteLine("This won't print!");
}
Console.Write("Actually this will not print either!");
Console.ReadLine();
}
}
不管我试图抓住什么异常类型(抛出的实际的异常是一个ArgumentException据我可以告诉)catch块不会执行里面的代码。实际上执行只会停在Activator.CreateInstance行。
只有在构造代表时才会发生这种情况吗?你应该为此使用'Delegate.CreateDelegate'。 – 2010-05-10 14:44:08
它可能只在构造委托时发生,但实际使用的代码并不知道它试图创建什么类型,现在的修正是如果类型继承自委派,那么即使尝试也是“禁止”。 – 2010-05-10 14:50:47