예제 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FakeTrackableProxyClass"/> class.
 /// </summary>
 /// <param name="typeToProxy">The type to proxy.</param>
 /// <param name="proxyHydrator">The proxy hydrator.</param>
 public FakeTrackableProxyClass(Type typeToProxy, IProxyHydrator proxyHydrator)
 {
     _typeToProxy   = typeToProxy;
     _isLoaded      = (proxyHydrator == null);
     _proxyHydrator = proxyHydrator;
     _changeTracker = new ChangeTracker(GetInitialValues);
 }
예제 #2
0
        /// <summary>
        /// Creates the proxy.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <param name="entityMap">The entity map.</param>
        /// <param name="proxyHydrator">The proxy hydrator.</param>
        /// <param name="implementITrackable">if set to <c>true</c> implement ITrackable.</param>
        /// <returns></returns>
        public static object CreateProxy(this Type type, EntityMap entityMap, IProxyHydrator proxyHydrator, bool implementITrackable = false)
        {
            IProxyBuilder proxyBuilder = implementITrackable ? new TrackableProxyBuilder() : new ProxyBuilder();
            var           proxyType    = proxyBuilder.CreateProxyType(type, entityMap);
            var           instance     = Activator.CreateInstance(proxyType, type, proxyHydrator);

            if (implementITrackable && (proxyHydrator == null))
            {
                var trackable = (ITrackable)instance;
                trackable.ChangeTracker.Start();
                trackable.Version = trackable.ChangeTracker.Version;
            }

            return(instance);
        }
예제 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FakeProxyClass"/> class.
 /// </summary>
 /// <param name="typeToProxy">The type to proxy.</param>
 /// <param name="proxyHydrator">The proxy hydrator.</param>
 public FakeProxyClass(Type typeToProxy, IProxyHydrator proxyHydrator)
 {
     _typeToProxy   = typeToProxy;
     _isLoaded      = (proxyHydrator == null);
     _proxyHydrator = proxyHydrator;
 }