The VOS supports events in precisely the same way that it supports properties (see the Property Definitions section). The conventional methods, however, are different and include means for subscribing and unsubscribing to events as well as for firing the event.
CLS Rule 28: The methods that implement the event must be marked mdSpecialName in the metadata.
CLS Rule 29: The add and remove methods for an event must both either be present or absent.
CLS Rule 39: The add and remove methods for an event must each take one parameter whose type defines the type of the event and that must be derived from System.Delegate.
CLS Rule 40: Events must adhere to a specific naming pattern. See Naming Patterns
CLS (consumer): Must ignore the mdSpecialName bit in appropriate name comparisons and must adhere to identifier rules. Otherwise, no direct support other than the usual access to the methods which define the event.
CLS (extender): Must ignore the mdSpecialName bit in appropriate name comparisons and must adhere to identifier rules. Otherwise, no direct support other than the usual access to the methods which define the event. In particular, an extender need not be able to define events.
CLS (framework): Must design understanding that not all CLS languages will access the event using special syntax.