Question - I'm defining a class for 2 state machines that are cascaded with
Nid and Vid
definining the 2 state machines. I want to use Nid or
Vid objects in
in the Vid class and Nid in the Nid Class.
What is a way to do this. I've looked at internal class
designation but am not
sure what the best way to do this might be.
Can someone show me an example or take what I've given and
show me what
I need to do.
public class frm
{
public Vid vid;
public Nid nid;
public void frm_load( object sender, EventArgs e)
{
vid = new Vid();
nid = new Nid();
}
}
//
// Class 1 state machine
//
public class Nid
{
InavState navidleState
InavState navwaitState
public Nid()
{
navidleState = new NavIdleState(this);
navwaitState = new NavWaitState(this);
navstate = NavIdleState;
}
public void Idle()
{
navstate.Idle()
}
public INavState NavState
{
set { this.navstate = value; }
get { return this.navstate; }
}
public InavState NavIdleState
{
get { return navidleState; }
}
public InavState NavWaitState
{
get { return navwaitState; }
}
public interface INavState
{
void Idle();
void Start();
}
public class NavIdleState : INavState
{
Nid nid;
public NavIdleState(Nid nid)
{
this.nid = nid;
}
public Idle()
{
nid.NavState = nid.WaitIdleState;
}
public void Start()
{
}
}
}
//
// Class 2 state machine
//
public class Vid
{
IState idleState
IState waitState
public Vid()
{
idleState = new IdleState(this);
waitState = newWaitState(this);
state = NavIdleState;
}
public void Idle()
{
navstate.Idle()
}
public IState State
{
set { this.state = value; }
get { return this.state; }
}
public IState IdleState
{
get { return idleState; }
}
public IState WaitState
{
get { return waitState; }
}
public interface IState
{
void BUp();
void BDown();
}
public class IdleState : IState, INavState
{
Vid vid;
Nid nid;
public IdleState(Vid vid)
{
this.vid = vid;
}
public IdleState(Nid nid)
{
this.nid = nid;
}
public BUp()
{
vid.State = vid.IdleState;
}
public void BDown()
{
vid.State = vid.WaitState;
}
}
}