Wire

public delegate void WireEventHandler<T>(T value);

public interface IWire

{

}

public interface IWireInput : IWire

{

}

public interface IWireOutput : IWire

{

}

public interface IWireInput<T> : IWireInput

{

event WireEventHandler<T> OnWireInputChanged;

T input

{

get;

}

}

public interface IWireOutput<T> : IWireOutput

{

T output

{

get;

set;

}

}