我已经发现了几个帖子关于提高事件与扩展方法添加事件,但我的问题是有点不同:使用扩展方法
我有一个这样的接口:
public interface IStateMachine
{
void SetState(IState NewState);
IState GetState();
}
使用这个接口我可以像下面创建一个扩展方法:
public static void ChangeState(this IStateMachine StateMachine, IState NewState)
{
StateMachine.GetState().Exit();
StateMachine.SetState(NewState);
StateMachine.GetState().Enter();
}
我真正想要的是将有需要,比如被解雇的事件:一个statechange-event
。
但是,我不希望StatechangeEvent
成为IStateMachine
界面的一部分,但似乎这是唯一的方法。我有几个类实现IStateMachine
,因此我必须每次都重做相同的代码。
谢谢,我会看看。我有不同类型的类可以都是一个IStateMachine。当我做一个基本的抽象类时,我遇到了多重继承的问题。 – avanwieringen 2013-03-04 13:35:29
@avanwieringen:在这种情况下,通过扩展方法在接口上实现pub/sub似乎是更好的主意。 – 2013-03-04 13:36:21