Exemplo n.º 1
0
        /// <summary>
        /// IoC를 통해 컴포넌트를 Resolve하고, <see cref="INotifyPropertyChanged"/>를 가지는 Proxy로 생성하여 반환합니다.
        /// NOTE: 원본 클래스의 속성이나 메소드가 virtual 이어야만 proxy의 interceptor가 수행합니다.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="componentId"></param>
        /// <param name="additionalInterfacesInterfaceToProxy"></param>
        /// <param name="interceptors"></param>
        /// <returns></returns>
        public static T CreateProxy <T>(string componentId, Type[] additionalInterfacesInterfaceToProxy,
                                        params IInterceptor[] interceptors) where T : class
        {
            if (IsDebugEnabled)
            {
                log.Debug("ComponentId[{0}]의 형식[{1}]에  INotifyPropertyChanged가 구현된 Proxy를 생성합니다...", componentId,
                          typeof(T).AssemblyQualifiedName);
            }

            return((T)DynamicProxyTool.Create(() => IoC.Resolve <T>(componentId), additionalInterfacesInterfaceToProxy, interceptors));
        }
Exemplo n.º 2
0
        /// <summary>
        /// IoC를 통해 컴포넌트를 Resolve하고, <see cref="INotifyPropertyChanged"/>를 가지는 Proxy로 생성하여 반환합니다.
        /// NOTE: 원본 클래스의 속성이나 메소드가 virtual 이어야만 proxy의 interceptor가 수행합니다.
        /// </summary>
        /// <param name="componentType"></param>
        /// <param name="additionalInterfacesInterfaceToProxy"></param>
        /// <param name="interceptors"></param>
        /// <returns></returns>
        public static object CreateProxy(Type componentType, Type[] additionalInterfacesInterfaceToProxy,
                                         params IInterceptor[] interceptors)
        {
            componentType.ShouldNotBeNull("componentType");

            if (IsDebugEnabled)
            {
                log.Debug("Component 형식[{0}]에  INotifyPropertyChanged가 구현된 Proxy를 생성합니다...", componentType.AssemblyQualifiedName);
            }


            return(DynamicProxyTool.Create(() => IoC.Resolve(componentType), additionalInterfacesInterfaceToProxy, interceptors));
        }