OK, admito que este código solo se verá raro para usted, y es porque es extraño. Esto es solo código para reproducir el comportamiento, no el código que quiero usar.No se puede detectar la excepción de 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();
}
}
No importa qué tipo de excepción Trato de coger (la excepción real emitida es un ArgumentException la medida de lo que puedo decir) el código dentro del bloque catch no se ejecutará. En realidad, la ejecución se detendrá en Activator.CreateInstance-line.
¿Esto solo ocurre al construir delegados? Se supone que debes usar 'Delegate.CreateDelegate' para eso. –
Probablemente solo ocurra al construir delegados, pero el código real donde se usa esto no es consciente de qué tipo está intentando crear, la solución ahora es que está "prohibido" siquiera intentar si el tipo hereda de Delegate. –