public TestServiceA(ITestServiceC testServiceC, [MJDParameterConstant] int num) { Num = num; _iTestServiceC = testServiceC; // this._iTestServiceC = testServiceC; Console.WriteLine($"{this.GetType().Name}被构造"); }
public IActionResult Index() { //ITestServiceA testServiceA = new TestServiceA(); this._logger.LogWarning("This is SecondController Index"); var c = this._iServiceProvider.GetService <ITestServiceC>(); Console.WriteLine($"cc {object.ReferenceEquals(this._iTestServiceC, c)}");//T/F if (_iTestServiceCStatic == null) { _iTestServiceCStatic = _iTestServiceC; } else { Console.WriteLine($"C&C {object.ReferenceEquals(this._iTestServiceC, _iTestServiceCStatic)}");//两次不同的请求 //T/F } if (_iTestServiceBStatic == null) { _iTestServiceBStatic = _iTestServiceB; } else { Console.WriteLine($"B&B:{object.ReferenceEquals(this._iTestServiceB, _iTestServiceBStatic)}");//两次不同的请求 //T/F } this._iTestServiceA.Show(); this._iTestServiceB.Show(); this._iTestServiceC.Show(); this._iTestServiceD.Show(); this._iTestServiceE.Show(); return(View()); }
public FourthController(ILogger <FourthController> logger, ILoggerFactory loggerFactory , ITestServiceA testServiceA , ITestServiceB testServiceB , ITestServiceC testServiceC , ITestServiceD testServiceD , ITestServiceE testServiceE , IServiceProvider serviceProvider , IConfiguration configuration , IUserService userService , DbContext dbContext ) //, DbContext dbContext) { this._logger = logger; this._loggerFactory = loggerFactory; this._iTestServiceA = testServiceA; this._iTestServiceB = testServiceB; this._iTestServiceC = testServiceC; this._iTestServiceD = testServiceD; this._iTestServiceE = testServiceE; this._iServiceProvider = serviceProvider; this._iConfiguration = configuration; this._dbContext = dbContext; this._iUserService = userService; }
public UsersController(ILoggerFactory factory, ILogger <UsersController> logger, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, IConfiguration configuration , IUserService userService) { this._Factory = factory; this._logger = logger; this._ITestServiceA = testServiceA; this._ITestServiceB = testServiceB; this._ITestServiceC = testServiceC; this._ITestServiceD = testServiceD; this._IUserService = userService; this._iConfiguration = configuration; this._iUserService = userService; this._userList = this._iUserService.Query <Zhaoxi.EntityFrameworkCore31.Model.User>(u => u.Id > 1) .OrderBy(u => u.Id) .Skip(1) .Take(5) .Select(u => new Users() { UserID = u.Id, UserEmail = u.Email, UserName = u.Name }).ToList(); }
public UserDAL(ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, ITestServiceE testServiceE) { this._iTestServiceA = testServiceA; this._iTestServiceB = testServiceB; this._iTestServiceC = testServiceC; this._iTestServiceD = testServiceD; this._iTestServiceE = testServiceE; }
public IocTest(ITestServiceA serviceA, ITestServiceB serviceB, ITestServiceC serviceC) { _serviceA = serviceA; _serviceB = serviceB; _serviceC = serviceC; }
public UsersController(ILoggerFactory factory, ILogger <UsersController> logger, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, IConfiguration configuration , IUserService userService) { this._Factory = factory; this._logger = logger; this._ITestServiceA = testServiceA; this._ITestServiceB = testServiceB; this._ITestServiceC = testServiceC; this._ITestServiceD = testServiceD; this._IUserService = userService; this._iConfiguration = configuration; this._iUserService = userService; #region 为了测试方便,不从数据获取数据,使用内存 //this._userList = this._iUserService.Query<Zhaoxi.EntityFrameworkCore31.Model.User>(u => u.Id > 1) // .OrderBy(u => u.Id) // .Skip(1) // .Take(5) // .Select(u => new Users() // { // UserID = u.Id, // UserEmail = u.Email, // UserName = u.Name // }).ToList(); this._userList = new List <Users>() { new Users { UserID = 1, UserName = "******" }, new Users { UserID = 2, UserName = "******" }, new Users { UserID = 3, UserName = "******" }, new Users { UserID = 4, UserName = "******" }, new Users { UserID = 5, UserName = "******" }, new Users { UserID = 6, UserName = "******" }, }; #endregion }
public FirstController(ILogger <FirstController> logger, ILoggerFactory loggerFactory, ITestServiceA iTestServiceA, ITestServiceB iTestServiceB, ITestServiceC iTestServiceC) { _logger = logger; _loggerFactory = loggerFactory; _iTestServiceA = iTestServiceA; _iTestServiceB = iTestServiceB; _iTestServiceC = iTestServiceC; }
public SecondController(ILoggerFactory loggerFactory, ILogger <SecondController> logger, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, IA ia, IUserService userService) { this._Factory = loggerFactory; this._logger = logger; this._ITestServiceA = testServiceA; this._ITestServiceB = testServiceB; this._ITestServiceC = testServiceC; this._ITestServiceD = testServiceD; this._IA = ia; this._IUserService = userService; }
public SecondController( ITestServiceA testServiceA , ITestServiceB testServiceB , ITestServiceC testServiceC , ITestServiceD testServiceD) { this._iTestServiceA = testServiceA; this._iTestServiceB = testServiceB; this._iTestServiceC = testServiceC; this._iTestServiceD = testServiceD; }
public FilterController(IConfiguration configuration, ILogger <FilterController> logger, ITestServiceA iTestServiceA, ITestServiceB iTestServiceB, ITestServiceC iTestServiceC) { _configuration = configuration; _logger = logger; _iTestServiceA = iTestServiceA; _iTestServiceB = iTestServiceB; _iTestServiceC = iTestServiceC; }
public FourthController(ILoggerFactory factory, ILogger <SecondController> ilogger, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, IA a) { _factory = factory; _ilogger = ilogger; _testServiceA = testServiceA; _testServiceB = testServiceB; _testServiceC = testServiceC; _testServiceD = testServiceD; _a = a; }
public SecondController(ILoggerFactory factory, ILogger <SecondController> ilogger, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, IEnumerable <ITestServiceD> testServiceDs, IA a) { _factory = factory; _ilogger = ilogger; _testServiceA = testServiceA; _testServiceB = testServiceB; _testServiceC = testServiceC; _testServiceDs = testServiceDs; _a = a; }
public FourthController(ILogger <FourthController> logger , ITestServiceA testServiceA , ITestServiceB testServiceB , ITestServiceC testServiceC , ITestServiceD testServiceD , ITestServiceE testServiceE , IA a) { this._logger = logger; this._iTestServiceA = testServiceA; this._iTestServiceB = testServiceB; this._iTestServiceC = testServiceC; this._iTestServiceD = testServiceD; this._iTestServiceE = testServiceE; this._ia = a; }
public SecondController(ILoggerFactory loggerFactory, ILogger <SecondController> logger, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, IA a) { _loggerFactory = loggerFactory; _logger = logger; _testServiceA = testServiceA; _testServiceB = testServiceB; _testServiceC = testServiceC; _testServiceD = testServiceD; _a = a; }
public UsersController(ILoggerFactory factory, ILogger <SecondController> logger, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, IA a) { this._Factory = factory; this._logger = logger; this._ITestServiceA = testServiceA; this._ITestServiceB = testServiceB; this._ITestServiceC = testServiceC; this._ITestServiceD = testServiceD; this._IA = a; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); #region Autofac #region autofac 获取服务 //ContainerBuilder containerBuilder = new ContainerBuilder(); //containerBuilder.RegisterType<TestServiceB>().As<ITestServiceB>(); //IContainer container = containerBuilder.Build(); //ITestServiceB serviceB= container.Resolve<ITestServiceB>();//获取服务 //serviceB.show(); #endregion #region 构造函数注入 ContainerBuilder containerBuilder = new ContainerBuilder(); containerBuilder.RegisterType <TestServiceB>().As <ITestServiceB>(); containerBuilder.RegisterType <TestServiceC>().As <ITestServiceC>(); IContainer container = containerBuilder.Build(); ITestServiceC serviceC = container.Resolve <ITestServiceC>(); serviceC.show(); #endregion #endregion #region JWT鉴权授权 var ValidAudience = Configuration["audience"]; var ValidIssuer = Configuration["issuer"]; var SecurityKey = Configuration["SecurityKey"]; services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)//jwt josn web token .AddJwtBearer(x => { x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidAudience = ValidAudience, ValidIssuer = ValidIssuer, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SecurityKey)) }; }); #endregion }
/// <summary> /// /// </summary> /// <returns></returns> public IActionResult Index() { //ITestServiceA testServiceA = new TestServiceA(); this._logger.LogWarning("This is SecondController Index"); //cc True //C & C False //B & B:True //ServiceProvoder 也是作用域单例的,同一个ServiceProvider产生的C都是一样的 //一个请求只会产生一个ServiceProvider var c = this._iServiceProvider.GetService <ITestServiceC>(); //实例化服务 //test c Console.WriteLine($"cc {object.ReferenceEquals(this._iTestServiceC, c)}");//T/F //test static c if (_iTestServiceCStatic == null) { _iTestServiceCStatic = _iTestServiceC; } else { Console.WriteLine($"C&C {object.ReferenceEquals(this._iTestServiceC, _iTestServiceCStatic)}");//两次不同的请求 //T/F } //test static b if (_iTestServiceBStatic == null) { _iTestServiceBStatic = _iTestServiceB; } else { Console.WriteLine($"B&B:{object.ReferenceEquals(this._iTestServiceB, _iTestServiceBStatic)}");//两次不同的请求 //T/F } this._iTestServiceA.Show(); this._iTestServiceB.Show(); this._iTestServiceC.Show(); this._iTestServiceD.Show(); this._iTestServiceE.Show(); return(View()); }
public SecondController(ILogger <SecondController> logger, ILoggerFactory loggerFactory, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, ITestServiceE testServiceE, IServiceProvider iServiceProvider ) { _logger = logger; this._loggerFactory = loggerFactory; this._iTestServiceA = testServiceA; this._iTestServiceB = testServiceB; this._iTestServiceC = testServiceC; this._iTestServiceD = testServiceD; this._iTestServiceE = testServiceE; this._iServiceProvider = iServiceProvider; }
public ThirdController(ILogger <ThirdController> logger, ILoggerFactory loggerFactory , ITestServiceA testServiceA , ITestServiceB testServiceB , ITestServiceC testServiceC , ITestServiceD testServiceD , ITestServiceE testServiceE , IServiceProvider serviceProvider , IConfiguration configuration) { this._logger = logger; this._loggerFactory = loggerFactory; this._iTestServiceA = testServiceA; this._iTestServiceB = testServiceB; this._iTestServiceC = testServiceC; this._iTestServiceD = testServiceD; this._iTestServiceE = testServiceE; this._iServiceProvider = serviceProvider; this._iConfiguration = configuration; }
public SecondController(ILoggerFactory factory, ILogger <SecondController> logger, CyfMYSQLContext mysqlcontext, CyfMSSQLContext mssqlcontext, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, IA a) { this._Factory = factory; this._logger = logger; this._ITestServiceA = testServiceA; this._ITestServiceB = testServiceB; this._ITestServiceC = testServiceC; this._ITestServiceD = testServiceD; this._IA = a; this._Mysqlcontext = mysqlcontext; this._Mssqlcontext = mssqlcontext; }
/// <summary> /// 来自DI依赖注入---构造函数注入---构造A对象依赖B对象,自动初始化B对象传入 /// /// 有个容器,负责构造SecondController(反射)--反射构造函数--需要B--再构造B---然后再构造A /// </summary> /// <param name="logger"></param> /// <param name="loggerFactory"></param> public SecondController(ILogger <SecondController> logger, ILoggerFactory loggerFactory , ITestServiceA testServiceA , ITestServiceB testServiceB , ITestServiceC testServiceC , ITestServiceD testServiceD , ITestServiceE testServiceE , IServiceProvider serviceProvider) //一次注入这么多,可能用不上,能不能我自己生成? 不建议, //1 大部分对象生成其实很快,且不占资源--特殊可以自己控制 //2 对象生命周期不同,注入的是跟controller的,action是跟方法的 { this._logger = logger; this._loggerFactory = loggerFactory; this._iTestServiceA = testServiceA; this._iTestServiceB = testServiceB; this._iTestServiceC = testServiceC; this._iTestServiceD = testServiceD; this._iTestServiceE = testServiceE; this._iServiceProvider = serviceProvider; }
public void Init(ITestServiceC testServiceC) { this._iTestServiceC = testServiceC; }
static void Main(string[] args) { ///容器的使用: /// 实例化一个容器; /// 注册 /// 获取服务 IServiceCollection container = new ServiceCollection(); // IServiceCollection container.AddTransient <ITestServiceA, TestServiceA>(); // 瞬时生命周期 每一次获取的对象都是新的对象 container.AddSingleton <ITestServiceB, TestServiceB>(); // 单例生命周期 在容器中永远只有当前这一个 container.AddScoped <ITestServiceC, TestServiceC>(); //当前请求作用域内 只有当前这个实例 container.AddSingleton <ITestServiceD>(new TestServiceD()); // 也是单例生命周期 ServiceProvider provider = container.BuildServiceProvider(); ITestServiceA testA = provider.GetService <ITestServiceA>(); ITestServiceA testA1 = provider.GetService <ITestServiceA>(); Console.WriteLine(object.ReferenceEquals(testA, testA1)); ITestServiceB testB = provider.GetService <ITestServiceB>(); ITestServiceB testB1 = provider.GetService <ITestServiceB>(); Console.WriteLine(object.ReferenceEquals(testB, testB1)); ITestServiceC testC = provider.GetService <ITestServiceC>(); ITestServiceC testC1 = provider.GetService <ITestServiceC>(); Console.WriteLine(object.ReferenceEquals(testC, testC1)); IServiceScope scope = provider.CreateScope(); ITestServiceC testc3 = provider.GetService <ITestServiceC>(); var testc4 = scope.ServiceProvider.GetService <ITestServiceC>(); Console.WriteLine(object.ReferenceEquals(testc3, testc4)); ITestServiceD testD = provider.GetService <ITestServiceD>(); ITestServiceD testD1 = provider.GetService <ITestServiceD>(); Console.WriteLine(object.ReferenceEquals(testD, testD1)); /* * Console.WriteLine("Hello World!"); * * var user = new { * Id=11, * Name="HelloDavy", * Age=18 * }; * * Console.WriteLine(user); * var options = new JsonSerializerOptions(); * options.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All); * var json = JsonSerializer.Serialize(user,options); * Console.WriteLine(json); * * Console.WriteLine("**************************************"); * { * SharpSix six = new SharpSix(); * People people = new People() * { * Id = 505, * Name = "马尔凯蒂" * }; * six.Show(people); * } * * Console.WriteLine("**************************************"); * { * SharpSeven seven = new SharpSeven(); * seven.Show(); * }*/ }
public TestServiceB(ITestServiceA testServiceA, [MyParameter] string name, ITestServiceC testServiceC, [MyParameter] int age) { this._iTestServiceA = testServiceA; this._Age = age; }
public UserDAL(ITestServiceA testServiceA, ITestServiceB testServiceB , ITestServiceC testServiceC, ITestServiceD testServiceD) { this._iTestServiceA = testServiceA; this._iTestServiceB = testServiceB; }
public TestServiceE(ITestServiceC serviceC) { Console.WriteLine($"{this.GetType().Name}被构造。。。"); }
static void Main(string[] args) { try { IServiceCollection services = new ServiceCollection(); services.AddTransient <ITestServiceA, TestServiceA>(); //瞬时生命周期 services.AddSingleton <ITestServiceB, TestServiceB>(); //单例--进程唯一实例 services.AddScoped <ITestServiceC, TestServiceC>(); //作用域单例--一个请求一个实例 services.AddTransient <ITestServiceE, TestServiceE>(); services.AddTransient <ITestServiceD, TestServiceD>(); var container = services.BuildServiceProvider(); { System.Console.WriteLine("****************1************"); var A1 = container.GetService <ITestServiceA>(); var A2 = container.GetService <ITestServiceA>(); System.Console.WriteLine(A1.Equals(A2)); } { System.Console.WriteLine("****************2************"); var B1 = container.GetService <ITestServiceB>(); var B2 = container.GetService <ITestServiceB>(); System.Console.WriteLine(B1.Equals(B2)); } { System.Console.WriteLine("****************3************"); var C1 = container.GetService <ITestServiceC>(); var C2 = container.GetService <ITestServiceC>(); System.Console.WriteLine(C1.Equals(C2)); } { System.Console.WriteLine("****************3************"); var C1 = container.GetService <ITestServiceC>(); var C2 = container.GetService <ITestServiceC>(); var C3 = container.CreateScope().ServiceProvider.GetService <ITestServiceC>(); var C4 = container.CreateScope().ServiceProvider.GetService <ITestServiceC>(); //所谓作用域,就是CreateScope,只要是以一个Scope 就是相同的 ITestServiceC C5 = null; ITestServiceC C6 = null; ITestServiceC C7 = null; Task.Run(() => { C5 = container.GetService <ITestServiceC>(); });//线程--线程没有影响! Task.Run(() => { C6 = container.GetService <ITestServiceC>(); }).ContinueWith(t => { C7 = container.GetService <ITestServiceC>(); }); //c5-c6-c7线程 其实没关系 System.Console.WriteLine(C1.Equals(C2)); //T System.Console.WriteLine(C1.Equals(C3)); //F System.Console.WriteLine(C1.Equals(C4)); //F System.Console.WriteLine(C3.Equals(C4)); //F System.Console.WriteLine(C3.Equals(C5)); //F System.Console.WriteLine(C3.Equals(C6)); //F System.Console.WriteLine(C3.Equals(C7)); //F System.Console.WriteLine(C5.Equals(C6)); //T System.Console.WriteLine(C5.Equals(C7)); //T System.Console.WriteLine(C6.Equals(C7)); //T //10个 T /F } } catch (Exception ex) { throw; } //Console.WriteLine("Hello World!"); }
static void Main(string[] args) { ///容器的使用: /// 实例化一个容器; /// 注册 /// 获取服务 IServiceCollection container = new ServiceCollection(); // IServiceCollection container.AddTransient <ITestServiceA, TestServiceA>(); // 瞬时生命周期 每一次获取的对象都是新的对象 container.AddSingleton <ITestServiceB, TestServiceB>(); // 单例生命周期 在容器中永远只有当前这一个 container.AddScoped <ITestServiceC, TestServiceC>(); //当前请求作用域内 只有当前这个实例 container.AddSingleton <ITestServiceD>(new TestServiceD()); // 也是单例生命周期 ServiceProvider provider = container.BuildServiceProvider(); ITestServiceA testA = provider.GetService <ITestServiceA>(); ITestServiceA testA1 = provider.GetService <ITestServiceA>(); Console.WriteLine(object.ReferenceEquals(testA, testA1)); ITestServiceB testB = provider.GetService <ITestServiceB>(); ITestServiceB testB1 = provider.GetService <ITestServiceB>(); Console.WriteLine(object.ReferenceEquals(testB, testB1)); ITestServiceC testC = provider.GetService <ITestServiceC>(); ITestServiceC testC1 = provider.GetService <ITestServiceC>(); Console.WriteLine(object.ReferenceEquals(testC, testC1)); IServiceScope scope = provider.CreateScope(); ITestServiceC testc3 = provider.GetService <ITestServiceC>(); var testc4 = scope.ServiceProvider.GetService <ITestServiceC>(); Console.WriteLine(object.ReferenceEquals(testc3, testc4)); ITestServiceD testD = provider.GetService <ITestServiceD>(); ITestServiceD testD1 = provider.GetService <ITestServiceD>(); Console.WriteLine(object.ReferenceEquals(testD, testD1)); //Console.WriteLine("Hello World!"); //var user = new //{ // Id = 11, // Name = "Richard" //}; //Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(user)); //Console.WriteLine("**************************************"); //{ // SharpSix six = new SharpSix(); // People people = new People() // { // Id = 505, // Name = "马尔凯蒂" // }; // six.Show(people); //} //Console.WriteLine("**************************************"); //{ // SharpSeven seven = new SharpSeven(); // seven.Show(); //} }
public IActionResult Index() { //自定义容器 常规IOC容器 容器对象--注册--生成 //构造对象A时,需要依赖B对象,那么就需要先构造B对象传入,也就是能在构造对象时,对象的依赖初始化并注入进去,这种技术手段就叫做依赖注入 //为什么要依赖注入 要IOC控制反转,不依赖细节,细节还会依赖细节,为了屏蔽细节,所以需要依赖注入去解决无限层级的对象依赖 //IOC是一种设计模式,是一种程序设计的目标 //DI是IOC实现的手段,是一种编码技术 IMJDContainer container = new MJDContainer(); //container.Register<IProductService, ProductService>(); //container.Register<ISqlHelper, SqlHelper>(); //container.Register<ISqlHelper, SqlHelper>("mysql"); //container.Register<ITestServiceB, TestServiceB>(); //container.Register<ITestServiceB, TestServiceB>("myB");//注册带别名的 //container.Register<ITestServiceA, TestServiceA>(paraList:new object[]{ 3}); //container.Register<ITestServiceC, TestServiceC>(); //依赖抽象 //ISqlHelper sqlHelper = container.Resolve<ISqlHelper>(); //方法注入 //单接口多实现 //ISqlHelper mysqlHelper = container.Resolve<ISqlHelper>("mysql"); // IProductService productService = container.Resolve<IProductService>(); //注入参数是string 或int //对象生命周期管理--是否重用对象 //瞬时、单例、作用域单例Scope //container.Register<ITestServiceC, TestServiceC>(lifetimeType: LifetimeType.Singleton); //ITestServiceC a = container.Resolve<ITestServiceC>(); //ITestServiceC b = container.Resolve<ITestServiceC>(); //var f = object.ReferenceEquals(a,b); //瞬时、单例、作用域单例Scope //Http请求时,一个请求处理过程中,创建一个实例,不同的请求过程处理,就是不同的实例 //区分请求,Http请求--Asp.NetCore内置Kestrel,初始化一个容器实例,然后每一次请求Http,就clone一个容器实例,或者就叫做创建子容器(包含注册关系), //然后一个请求就是一个子容器实例,那么就可以做到请求单例 //container.Register<ITestServiceC, TestServiceC>(lifetimeType: LifetimeType.Scope); //ITestServiceC a1 = container.Resolve<ITestServiceC>(); //ITestServiceC a2 = container.Resolve<ITestServiceC>(); //Console.WriteLine(object.ReferenceEquals(a1,a2)); //IMJDContainer container1 = container.CreateChildContainer(); //ITestServiceC a11 = container1.Resolve<ITestServiceC>(); //ITestServiceC a12 = container1.Resolve<ITestServiceC>(); //Console.WriteLine(object.ReferenceEquals(a11, a12)); //IMJDContainer container2 = container.CreateChildContainer(); //ITestServiceC a21 = container2.Resolve<ITestServiceC>(); //ITestServiceC a22 = container2.Resolve<ITestServiceC>(); //Console.WriteLine(object.ReferenceEquals(a21, a22)); //Console.WriteLine(object.ReferenceEquals(a1, a11)); //Console.WriteLine(object.ReferenceEquals(a1, a21)); //Console.WriteLine(object.ReferenceEquals(a11, a21)); //Console.WriteLine(object.ReferenceEquals(a11, a22)); //Console.WriteLine(object.ReferenceEquals(a12, a21)); //Console.WriteLine(object.ReferenceEquals(a12, a22)); { //IOC -AOP container.Register <ITestServiceB, TestServiceB>(); container.Register <ITestServiceC, TestServiceC>(); ITestServiceC testServiceC = container.Resolve <ITestServiceC>(); testServiceC.show(); //testServiceC = (ITestServiceC)CustomAopExtend.AOP(testServiceC, typeof(ITestServiceC)); //testServiceC.show(); } return(View()); }