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()); }
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>); }
public DynamicProxyMetaObject(Expression expression, DynamicProxy proxy) : base(expression, BindingRestrictions.Empty, proxy) { _proxy = proxy; }
public static T Create(T obj) { var proxy = new DynamicProxy <T>(obj); return((T)proxy.GetTransparentProxy()); }