这在c#活动中是可能的吗?


using static main.main2;
namespace main;
class MainClass
{
public delegate void dele();
public static event dele? eve;
private static void Main()
{
eve += a;
if (eve != null) { eve(); }
}
}
static class main2
{
public static void a()
{
Console.WriteLine("A");
}
}

我举了一个例子来明确地问这个问题。如果从上面的示例中删除方法a(),则在eve += a中发生错误;这部分。我知道为什么会有错误。有没有一种方法可以防止没有方法a()的错误?只有当方法a()存在时,才有办法将a添加到eve ?

谢谢你的阅读。谢谢你的帮助。

是的,您可以使用反射来检查方法a是否定义,并在此基础上调用eve += a;

var methodInfo = typeof(main2).GetMethod("a", BindingFlags.Static | BindingFlags.Public);
if (methodInfo != null)
{
eve += main2.a;
}

最新更新