public void MapObjectsAsParallel_To_Proxy_With_CustomMap() { var targets = SourceDatas .MapObjectsAsParallel <SourceData, TargetData>(() => DynamicProxyTool.CreateNotifyPropertyChanged <TargetData>(), (s, t) => t.OtherDataOnly = s.DataOnly) .ToList(); }
public void MapObjectsAsParallel_To_Proxy_With_CustomMap_Options() { var targets = SourceDatas .MapObjectsAsParallel <SourceData, TargetData>(() => DynamicProxyTool.CreateNotifyPropertyChanged <TargetData>(), (s, t) => t.OtherDataOnly = s.DataOnly) .ToList(); Assert.AreEqual(SourceDatas.Count, targets.Count); for (int i = 0; i < SourceDatas.Count; i++) { var source = SourceDatas[i]; var target = targets[i]; Assert.AreEqual(source.Id, target.Id); Assert.AreEqual(source.Name, target.Name); Assert.AreEqual(source.Guid, target.Guid); Assert.AreEqual(source.CreatedDate, target.CreatedDate); Assert.AreEqual(source.ElapsedTimeSpan, target.ElapsedTimeSpan); } }
/// <summary> /// NOTE: Proxy 생성 시 꼭 Type을 이용하여 Proxy를 생성해야 제대로 됩니다!!! Target Instance 으로 Proxy를 생성하면 예외가 발생합니다. /// </summary> /// <param name="entityType"></param> /// <returns></returns> protected override object CreateProxy(Type entityType) { return(DynamicProxyTool.CreateNotifyPropertyChanged(entityType)); }
/// <summary> /// IoC를 통해 컴포넌트를 Resolve하고, <see cref="INotifyPropertyChanged"/>를 가지는 Proxy로 생성하여 반환합니다. /// NOTE: 원본 클래스의 속성이나 메소드가 virtual 이어야만 proxy의 interceptor가 수행합니다. /// </summary> /// <param name="typeToProxy"></param> /// <returns></returns> public static object CreateNotifyPropertyChangedProxy(Type typeToProxy) { return(DynamicProxyTool.CreateNotifyPropertyChanged(() => IoC.Resolve(typeToProxy))); }
/// <summary> /// IoC를 통해 컴포넌트를 Resolve하고, <see cref="INotifyPropertyChanged"/>를 가지는 Proxy로 생성하여 반환합니다. /// NOTE: 원본 클래스의 속성이나 메소드가 virtual 이어야만 proxy의 interceptor가 수행합니다. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="componentId"></param> /// <returns></returns> public static T CreateNotifyPropertyChangedProxy <T>(string componentId) { componentId.ShouldNotBeEmpty("componentId"); return((T)DynamicProxyTool.CreateNotifyPropertyChanged(() => IoC.Resolve <T>(componentId))); }
// private static readonly ProxyGenerator _proxyGenerator = new ProxyGenerator(); /// <summary> /// IoC를 통해 컴포넌트를 Resolve하고, <see cref="INotifyPropertyChanged"/>를 가지는 Proxy로 생성하여 반환합니다. /// NOTE: 원본 클래스의 속성이나 메소드가 virtual 이어야만 proxy의 interceptor가 수행합니다. /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static T CreateNotifyPropertyChangedProxy <T>() { return((T)DynamicProxyTool.CreateNotifyPropertyChanged(() => IoC.Resolve <T>())); }