Element1:
public interface IElement1<TKey> : Containers5.IHaveKey<TKey>
abstract public class Element1<TKey> : Containers5.IHaveKey<TKey>, IHaveInit, IElement1<TKey>
----------------------------------------------------------------------------------------------------------------
Element2: Element1 + Collecttion
public interface IElement2<TKey, TItem> : IElement1<TKey>
public abstract class Element2<TKey, TItem, TList> : Element1<TKey> , IElement2<TKey,TItem>, IHaveUri
where TItem : class, IElement1<TKey>, IHaveKey<TKey>, IHaveInit
where TList : IContainer<TKey, TItem>
public class Portfolio : Element2<string, IStrategy, Containers5.ListContainer<string, IStrategy>> , IPortfolio
public class Portfolios : Element2<string, IPortfolio, Containers5.ListContainer<string, IPortfolio>> , IPortfolios
public class Dde2 : Element2<string, TopicItem, Containers5.DictionaryContainer<string, TopicItem>>, IDde
public class Test : Element2<string, TestItem , Containers5.DictionaryContainer<string, TestItem>>
public class Works : Element2<string, IWorkBase, DictionaryContainer<string, IWorkBase>>, IWorks
public class WorkTasks : Element2<string, IWorkTask3, Containers5.DictionaryContainer<string, IWorkTask3>>
-----------------------------------------------------------------------------------------------------------------
Element3: Element3 = Element1 + Queue + Work
public interface IElement3<TKey, in TQueueInput> :
IElement1<TKey>,
IHaveQueue3<TQueueInput>,
IHaveWork<TQueueInput> { }
public abstract class Element3<TKey, TEventArgs> : Element1<TKey>, IElement3<TKey,TEventArgs>
where TEventArgs : IEventArgs
public class Tickers3 : Element3<string,IEventArgs>, ITickers //, IHaveQueue<string>
public abstract class TradeBaseRepository35<TContext, TKey, TValueExt, TValueInt, TValueIntOut> :
Element3<string, IEventArgs>,
ITradeBaseRepository3<TKey, TValueExt, TValueIntOut>, INeedDataBaseName
where TValueExt : class, IHaveKey<TKey> //, IHaveId<TId>
where TValueInt : class, IHaveKey<TKey>, TValueIntOut //, IHaveId<TId>
where TValueIntOut : class, IHaveKey<TKey> //, IHaveId<TId>
where TContext : IDisposable
public abstract class Context : Element3<string, IEventArgs>, IContext
public class ConsoleWriter : Element3<string,IEventArgs>
public class BarRand : Element3<string, IEventArgs>
-----------------------------------------------------------------------------------------------------------------------
Element32: Element3 + Collection
public interface IElement32<TKey, TItem> : IElement1<TKey>
{
IEnumerable<TItem> Items { get; }
TItem Register(TItem item);
TItem GetByKey(TKey key);
}
public abstract class Element32<TKey, TEventArgs, TList, TItem> : Element3<TKey, TEventArgs> , IElement2<TKey, TItem>, IHaveUri
where TItem : class, IElement1<TKey>, IHaveKey<TKey> //, IHaveInit
// where TItem : class, IHaveKey<TKey> // , IHaveInit
where TList : IContainer<TKey, TItem>
where TEventArgs : IEventArgs
//where TList : ICollection<TItem>
public class EventHub3 : Element32<string, IEventArgs, DictionaryContainer<string, EventHubItem3>, EventHubItem3>