C#不可在类外触发类里面的静态事件
起初是这样
using System; namespace MyNamespace { public class VCS { public static event Action<string> InviteToJoinMeetEvent; // 用于测试的主方法 public static void Main() { // 订阅事件 InviteToJoinMeetEvent += HandleInviteToJoinMeetEvent; // 实例化并调用触发方法 SomeOtherClass obj = new SomeOtherClass(); obj.SomeMethod(); } // 事件处理程序 private static void HandleInviteToJoinMeetEvent(string message) { Console.WriteLine("Event Invoked with message: " + message); } } public class SomeOtherClass { public void SomeMethod() { // 检查事件是否为空,并触发事件 VCS.InviteToJoinMeetEvent?.Invoke("Your Message Here"); } } }
想着 直接
VCS.InviteToJoinMeetEvent?.Invoke("Your Message Here");
结果。。。不行,提示不可以??? 平时还真没注意这个 那想想肯定是保护事件的触发由它自己来控制,不要使用外面的人来,这样就有比较安全的一种保护,,嗯。。哼。。很好
突然有一个问题? 语法上 是如何做到的呢?
GPT一下
在 C# 中,不能直接从外部触发静态事件是因为事件背后有一个私有的委托字段。 这个字段只能在事件声明的类内部访问,以确保封装性和安全性。 事件的设计是为了让外部代码可以订阅和取消订阅事件,但不允许外部代码直接触发事件。 这种设计可以防止意外或恶意的事件触发,从而保证事件的使用更加安全和可靠。
这是理解上的。那么从C#语法上 到底如何实现?先记上,有时间了再更新