我想有一个事件,当一个类实例被创建时触发。我希望这能在课堂上发生。我知道我可以在新实例代码执行后的一行引发事件,但如果你有几个地方更新类,那就违背了OOD的目的。
我试图从Sub New
引发事件,这导致触发器被触发,但当时没有创建实例,因此当事件处理程序触发实例时,该实例是nothing
。
解决方案-使用共享事件的工厂方法
public class MyClass
public shared event SomeEvent As EventHandler
private sub New()
end sub
public shared sub CreateInstance()
Dim instance as new MyClass()
RaiseEvent SomeEvent(instance, new EventArgs())
return instance;
End Sub
end class
消费AddHandler MyClass.SomeEvent, AddressOf SomeHandlerMethod
dim cls as MyClass = MyClass.CreateInstance()
SomeHandlerMethod
会在你得到cls
之前运行