public AopTests() { ConfigurationManager.Instance.UseAutofac(); IocContainer.Instance.OnServiceTypeRegistering += (sender, e) => { if (e.ServiceType == typeof(IUser)) { e.SetNewImplementationType(DynamicProxyFactory.CreateProxyType(e.ServiceType , e.ImplementationType , new Type[] { typeof(UnitOfWorkInterceptor) , typeof(PerformanceCounterInterceptor) }).ProxyType); } }; IocContainer.Instance.OnServiceInstanceRegistering += (sender, e) => { if (e.ServiceType == typeof(IUser)) { e.SetNewInstance(DynamicProxyFactory.CreateProxy(e.ServiceType , e.Instance , new Type[] { typeof(UnitOfWorkInterceptor) , typeof(PerformanceCounterInterceptor) })); } }; IocContainer.RegisterByAssembly(typeof(AopTests).GetTypeInfo().Assembly); }
public void Test1() { var obj1 = DynamicProxyFactory.CreateProxy <IUser>(new Saller(), null); obj1.property2 = -9; Assert.Equal(-9, obj1.property2); obj1.Eat(new Rice()); var obj2 = DynamicProxyFactory.CreateProxyType(typeof(IUser), typeof(Supplier), null).ProxyType.GetConstructor(Type.EmptyTypes).Invoke(null); var resolver = IocContainer.Instance.Resolve <IIocResolver>(); var user1 = resolver.Resolve <IUser>(); var val1 = user1.method2(); var val2 = user1.property1; user1.property2 = -9; Assert.Equal(-9, user1.property2); user1.Eat(new Rice()); }