Ejemplo n.º 1
0
        public static T Create <T>()
        {
            object impl;
            var    obj = Bakery.Bake(typeof(T), typeof(ObservedEntity), out impl);

            ((IObserved)obj).InnerImpl = impl;
            return((T)obj);
        }
Ejemplo n.º 2
0
        public object OnGetProperty(Type type, string key)
        {
            if (key == nameof(IObserved.HasChanges))
            {
                return(HasChanges);
            }
            if (key == nameof(IObserved.InnerImpl))
            {
                return(InnerImpl);
            }

            if (type.IsInterface == false)
            {
                return(storage[key]);
            }

            else if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(ICollection <>))
            {
                object observed;
                var    obj = Bakery.Bake(
                    type, typeof(ObservedCollection <>).MakeGenericType(type.GetGenericArguments()[0]),
                    out observed);
                //((IObserved)obj).InnerImpl = observed;
                ((TrackingGraph)observed).AddReference(this);
                return(obj);
            }

            else
            {
                object observed;
                var    obj = Bakery.Bake(type, typeof(ObservedEntity), out observed);
                ((IObserved)obj).InnerImpl = observed;
                ((TrackingGraph)observed).AddReference(this);
                return(obj);
            }
        }