Developer technologies | ASP.NET | Other
A set of technologies in .NET for building web applications and web services. Miscellaneous topics that do not fit into specific categories.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Hello,
Why can't I do that? Where is the error? No access? Problem is here.
public void ActivateStateTest(IState state)
{
ActiveState = state;
}
The whole code.
public class StateMachine
{
IState ActiveState = null;
private MovingDown MD;// = new State1(this);
private MovingUp MU;// = new State2(this);
private Idle _Idle;// = new State3(this);
public StateMachine()
{
MD = new MovingDown(this);
MU = new MovingUp(this);
_Idle = new Idle(this);
}
public void ActivateState()
{
ActiveState = _Idle;
}
public void ActivateStateTest(IState state)
{
ActiveState = state;
}
public AbstractState GetActiveState()
{
return ActiveState as AbstractState;
}
public void RaiseUserUp()
{
ActiveState.RaiseUserUp();
}
public void RaiseUserDown()
{
ActiveState.RaiseUserDown();
}
public void RaisePosSensorUpperPosition()
{
ActiveState.RaisePosSensorUpperPosition();
}
public void RaisePosSensorLowerPosition()
{
ActiveState.RaisePosSensorLowerPosition();
}
}
namespace CAStateMachinePattern.Core
{
interface IState
{
void RaiseUserUp();
void RaiseUserDown();
void RaisePosSensorUpperPosition();
void RaisePosSensorLowerPosition();
String GetName();
}
public abstract class AbstractState : IState
{
protected StateMachine StateMachine;
public AbstractState(StateMachine stateMachine)
{
this.StateMachine = stateMachine;
}
public virtual void RaiseUserUp()
{
}
public virtual void RaiseUserDown()
{
}
public virtual void RaisePosSensorUpperPosition()
{
}
public virtual void RaisePosSensorLowerPosition()
{
}
public virtual String GetName() { return "Abstract"; }
}
public class MovingDown : AbstractState
{
public MovingDown(StateMachine stateMachine) : base(stateMachine)
{
}
public override void RaiseUserUp()
{
// stateMachine.activateState(new Idle(stateMachine));
}
public override void RaisePosSensorLowerPosition()
{
// stateMachine.activateState(new Idle(stateMachine));
}
public override String GetName() { return "MovingDown"; }
}
public class MovingUp : AbstractState
{
public MovingUp(StateMachine stateMachine) : base(stateMachine)
{
}
public override void RaiseUserDown()
{
// stateMachine.activateState(new Idle(stateMachine));
}
public override void RaisePosSensorUpperPosition()
{
// stateMachine.activateState(new Idle(stateMachine));
}
public override String GetName() { return "MovingUp"; }
}
public class Idle : AbstractState
{
public Idle(StateMachine stateMachine) : base(stateMachine)
{
}
public override void RaiseUserUp()
{
// stateMachine.activateState(new MovingDown(stateMachine));
}
public override void RaiseUserDown()
{
// stateMachine.activateState(new Idle(stateMachine));
}
public override String GetName() { return "Idle"; }
}
}
Try adding public:
public interface IState { ... }.