private ObservableObject(object target, IDictionary <string, object> values, Func <IObservableObject <T, W>, T> proxify, string name = null, IManipulator <W, object> manipulator = null, object meta = null, params Type[] otherTypes) { if (!typeof(T).IsInterface) { throw new ArgumentException($"{typeof(T).Name} should be interface"); } if (proxify == null) { throw new ArgumentException($"{nameof(proxify)} should not be Null"); } Meta = meta; Target = target; Values = values ?? new Dictionary <string, object>(); Name = name ?? $"ObservableObject@{States.NextId}"; Manipulator = manipulator ?? Manipulator <W, object> .For(); KeysAtom = new Atom($"{Name}.keys"); Proxy = proxify(this); }
public ObservableValue(TIn value, string name = null, IManipulator manipulator = null, object meta = null) : base(name ?? $"ObservableValue@{States.NextId}") { Meta = meta; Manipulator = manipulator ?? Manipulator <TIn, TOut> .For(); _Value = Manipulator.Enhance(value, default(TIn), Name); }
protected ObservableList(string name, IManipulator <TIn, TOut> manipulator = null, object meta = null) { Values = new List <TIn>(); Name = name ?? $"ObservableArray@{States.NextId}"; Manipulator = manipulator ?? Manipulator <TIn, TOut> .For(); KeysAtom = new Atom(Name); Meta = meta; }
protected ObservableMap(string name, IManipulator <TIn, TOut, TKey> manipulator = null, object meta = null) { Data = new Map <TKey, IObservableValue <TIn> >(); HasMap = new Map <TKey, IObservableValue <bool> >(); Name = name ?? $"ObservableMap@{States.NextId}"; Manipulator = manipulator ?? Manipulator <TIn, TOut, TKey> .For(); KeysAtom = new Atom($"{Name}.keys()"); Meta = meta; }