...
- Suggestion by Gena on pull / loop approach, LinkableComponent
Code Block |
---|
public interface ILinkableComponent { LinkableComponentStatus Status { get; } void Initialize(); // =================================== pull approach var triggerExchangeItem = component.OutputItems[0]; triggerComponent.GetValues(triggerExchangeItem); // =================================== loop approach while(!allComponentsAreFinished) { void Validate(); foreach(var component in components) { void Update(); void Finish(); if(component.Status != LinkableComponentStatus.Finished) IList<IInputItem> InputItems { get; } IList<IOutputItem> OutputItems { get; } component.Update(); IList<IOutputDecorator> OutputDecorators { get; } // (another discussion) filtered data} } public interface ILinkableComponent { // get's valuesLinkableComponentStatus fromStatus the{ specifiedget; component} IMatrixvoid GetValuesInitialize(IInputExchangeItem query); //void Validate(); // when this property is set to true //void Update(); void Finish(); //IList<IInputItem> defaultInputItems value{ is false (allow cascade calls, pull-driven)get; } // bool CascadeUpdateCallsDisabled IList<IOutputItem> OutputItems { get; set; } } public interface IInputItem : IExchangeItem { IMatrix Values { get; set; } } public interface IOutputItem : IExchangeItem { IMatrix Values { get; } } // =================================== pull approach var triggerExchangeItem = component.OutputItems[0]; triggerComponent.GetValues(triggerExchangeItem); // =================================== loop approach while(!allComponentsAreFinished) { foreach(var component in components) { bool CascadeUpdateCallsDisabled { get; set; } // Suggestion: ask for specific values: e.g. filtered data IList if(component.Status != LinkableComponentStatus.Finished) GetValues(IInputExchangeItem query); } |
- Gena's suggestion for 2D return type
Code Block public interface IInputItem : IExchangeItem { IMatrix Values { get; set; } }
...
public interface IOutputItem : IExchangeItem {
...
IMatrix Values { get; } }
...
...
public interface IMatrix : IList { int Rows { get; } int Columns { get; } object GetValue(int row, int column); void SetValue(object value, int row, int column); object[,] GetValues(int startRow, int endRow, int startColumn, int endColumn); void SetValues(object[,] values, int startRow, int endRow, int startColumn, int endColumn); }
5. Release 2.0 plan
5.1. Documentation / basic / changes
...