【发布时间】:2021-10-15 21:15:09
【问题描述】:
如何修复 CS0070 错误?
错误:
错误 CS0070 事件“Demo.MyEvent”只能出现在 += 或 -= 的左侧(在“Demo”类型中使用时除外)
代码:
class Demo
{
public event EventHandler<int> MyEvent;
public void Handler(object sender, int arg)
{
Console.WriteLine($"I just go {arg}");
}
}
class Program
{
static void Main(string[] args)
{
var demo = new Demo();
var eventInfo = typeof(Demo).GetEvent("MyEvent");
var handlerMethod = demo.GetType().GetMethod("Handler");
var handler = Delegate.CreateDelegate(
eventInfo.EventHandlerType,
null,
handlerMethod
);
eventInfo.AddEventHandler(demo, handler);
demo.MyEvent?.Invoke(null, 312);
}
}
错误行:
demo.MyEvent?.Invoke(null, 312);
【问题讨论】:
-
因为,正如错误消息所述,只有
Demo被允许Invoke事件。