class Program
{
static void Main(string[] args)
{
B b = new B();
b.Run();
Console.Read();
}
}
class A
{
public event Action onChanged;
public void Raise()
{
if (onChanged != null)
onChanged();
}
}
class B
{
public void Run()
{
A a = new A();
a.onChanged += a_onChanged;
a.Raise();
}
private void a_onChanged()
{
Console.WriteLine("Wow! Invoked");
}
}
我不知道有哪些有效的观点可以证明我打破了封装,或者可能是其他原因。根据我的理解,我正在打破封装,因为一个私有方法被另一个类调用了,这是否足以证明我违反了面向对象编程的法则。需要收集更多内部概念和代码描述。
event Action onChanged
应该被命名为Changed
。OnXxx
通常用于虚方法,以触发Xxx
事件。 - Jonathon Reinhart