Example #1
0
        public static T Create <T>(Action before, Action after)
        {
            // 实例化被代理泛型对象
            T instance = Activator.CreateInstance <T>();
            // 实例化动态代理,创建动态代理对象
            var proxy = new DynamicProxy <T>(instance)
            {
                BeforeAction = before, AfterAction = after
            };

            // 返回透明代理对象
            return((T)proxy.GetTransparentProxy());
        }
Example #2
0
        public static IRepository <T> Create <T>()
        {
            var repository   = new Repository <T>();
            var dynamicProxy = new DynamicProxy <IRepository <T> >(repository);

            dynamicProxy.BeforeExecute += (s, e) => Log(
                "Before executing '{0}'", e.MethodName);
            dynamicProxy.AfterExecute += (s, e) => Log(
                "After executing '{0}'", e.MethodName);
            dynamicProxy.ErrorExecuting += (s, e) => Log(
                "Error executing '{0}'", e.MethodName);
            dynamicProxy.Filter = m => !m.Name.StartsWith("Get");
            return(dynamicProxy.GetTransparentProxy() as IRepository <T>);
        }
Example #3
0
 public DynamicProxyMetaObject(Expression expression, DynamicProxy proxy)
     : base(expression, BindingRestrictions.Empty, proxy)
 {
     _proxy = proxy;
 }
Example #4
0
        public static T Create(T obj)
        {
            var proxy = new DynamicProxy <T>(obj);

            return((T)proxy.GetTransparentProxy());
        }