/// <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); }
/// <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); }
/// <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; }