当前位置: 首页>>代码示例>>C#>>正文


C# Container.RegisterFactory方法代码示例

本文整理汇总了C#中Container.RegisterFactory方法的典型用法代码示例。如果您正苦于以下问题:C# Container.RegisterFactory方法的具体用法?C# Container.RegisterFactory怎么用?C# Container.RegisterFactory使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Container的用法示例。


在下文中一共展示了Container.RegisterFactory方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: T03_Register_Factory_Both

 public void T03_Register_Factory_Both()
 {
     var container = new Container(log: Write);
     container.RegisterFactory(factory1);
     container.RegisterFactory<ISomeClass>(factory2);
     container.Resolve<SomeClass>();
     Assert.Equal(1, counter1);
     container.Resolve<ISomeClass>();
     Assert.Equal(1, counter2);
 }
开发者ID:dshe,项目名称:StandardContainer,代码行数:10,代码来源:FactoryTest.cs

示例2: T01_Concrete

 public void T01_Concrete()
 {
     var container = new Container(log: Write);
     container.RegisterFactory(factory1);
     Assert.Throws<TypeAccessException>(() => container.RegisterFactory(factory1)).WriteMessageTo(Write);
     var instance1 = container.Resolve<SomeClass>();
     Assert.Equal(1, counter1);
     var instance2 = container.Resolve<SomeClass>();
     Assert.Equal(2, counter1);
     Assert.NotEqual(instance1, instance2);
 }
开发者ID:dshe,项目名称:StandardContainer,代码行数:11,代码来源:FactoryTest.cs

示例3: T02_factory_from_factory

 public void T02_factory_from_factory()
 {
     var container = new Container(log: Write);
     Func<SomeClass> factory = () => new SomeClass();
     container.RegisterFactory(factory);
     var f = container.Resolve<Func<SomeClass>>();
     Assert.Equal(factory, f);
     Assert.NotEqual(f(), f());
 }
开发者ID:dshe,项目名称:StandardContainer,代码行数:9,代码来源:TypeFactoryResolveTest.cs

示例4: T02_Register_Factory

 public void T02_Register_Factory()
 {
     var container = new Container(log: Write);
     container.RegisterFactory<ISomeClass>(factory1);
     var instance1 = container.Resolve<ISomeClass>();
     Assert.Equal(1, counter1);
     var instance2 = container.Resolve<ISomeClass>();
     Assert.Equal(2, counter1);
     Assert.NotEqual(instance1, instance2);
 }
开发者ID:dshe,项目名称:StandardContainer,代码行数:10,代码来源:FactoryTest.cs

示例5: T00_Various_types

 public void T00_Various_types()
 {
     var container = new Container(log: Write);
     Assert.Throws<ArgumentNullException>(() => container.RegisterSingleton(null)).WriteMessageTo(Write);
     Assert.Throws<ArgumentNullException>(() => container.RegisterFactory(typeof(object), null)).WriteMessageTo(Write);
     Assert.Throws<ArgumentNullException>(() => container.RegisterInstance(typeof(object), null)).WriteMessageTo(Write);
     Assert.Throws<TypeAccessException>(() => container.RegisterSingleton(typeof(int))).WriteMessageTo(Write);
     Assert.Throws<TypeAccessException>(() => container.RegisterSingleton(typeof(string))).WriteMessageTo(Write);
     Assert.Throws<TypeAccessException>(() => container.RegisterInstance(42)).WriteMessageTo(Write);
     Assert.Throws<ArgumentNullException>(() => container.Resolve(null)).WriteMessageTo(Write);
 }
开发者ID:dshe,项目名称:StandardContainer,代码行数:11,代码来源:RegisterErrorTest.cs

示例6: T03_Dispose_Other

        public void T03_Dispose_Other()
        {
            var container = new Container(defaultLifestyle: DefaultLifestyle.Singleton, log: Write);
            container.RegisterTransient<ClassA>();
            var instance = container.Resolve<ClassA>();
            container.Dispose();
            Assert.False(instance.IsDisposed);

            container.RegisterFactory(() => instance);
            container.Dispose();
            Assert.False(instance.IsDisposed);
        }
开发者ID:dshe,项目名称:StandardContainer,代码行数:12,代码来源:DisposeTest.cs

示例7: GetInstance_TypeRegisteredAsFactory_ResolvesAsExpected

        public void GetInstance_TypeRegisteredAsFactory_ResolvesAsExpected()
        {
            // Arrange
            var container = new Container();

            container.RegisterFactory<IServiceFactory>();

            // Act
            var factory = container.GetInstance<IServiceFactory>();

            // Assert
            Assert.IsNotNull(factory);
        }
开发者ID:jamesqo,项目名称:SimpleInjector,代码行数:13,代码来源:AutomaticFactoryExtensionsTests.cs

示例8: ToString_OnInstanceResolvedAsAutomaticFactory_Succeeds

        public void ToString_OnInstanceResolvedAsAutomaticFactory_Succeeds()
        {
            // Arrange
            var container = new Container();

            container.Register<IService, Service>();

            container.RegisterFactory<IServiceFactory>();

            var factory = container.GetInstance<IServiceFactory>();

            // Act
            factory.ToString();
        }
开发者ID:jamesqo,项目名称:SimpleInjector,代码行数:14,代码来源:AutomaticFactoryExtensionsTests.cs

示例9: CallingFactoryMethod_OnInstanceResolvedAsAutomaticFactory_ResolvesExpectedService

        public void CallingFactoryMethod_OnInstanceResolvedAsAutomaticFactory_ResolvesExpectedService()
        {
            // Arrange
            var container = new Container();

            container.Register<IService, Service>();

            container.RegisterFactory<IServiceFactory>();

            var factory = container.GetInstance<IServiceFactory>();

            // Act
            var instance = factory.CreateService();

            // Assert
            AssertThat.IsInstanceOfType(typeof(Service), instance);
        }
开发者ID:jamesqo,项目名称:SimpleInjector,代码行数:17,代码来源:AutomaticFactoryExtensionsTests.cs

示例10: T04_Register_Auto

 public void T04_Register_Auto()
 {
     var container = new Container(log: Write, defaultLifestyle: DefaultLifestyle.Singleton);
     container.RegisterFactory(factory1);
     container.Resolve<SomeClass>();
     Assert.Equal(container.Resolve<ISomeClass>(), container.Resolve<ISomeClass>());
     Assert.Equal(1, counter1);
 }
开发者ID:dshe,项目名称:StandardContainer,代码行数:8,代码来源:FactoryTest.cs

示例11: RegisterService

		/// <summary>
		/// 注册一个服务类型,以便服务工厂进行管理。
		/// 该方法将指定的服务类型放入IOC容器,任何服务类型必须在注册后才能够通过IOC容器进行访问。
		/// 该服务类型的实例是通过服务工厂对象创建的,其生命周期由为其定义的 ClientChannelCacheModeAttribute 决定。
		/// </summary>
		/// <param name="container">要在其中注册服务的容器。</param>
		/// <param name="serviceType">要注册的服务类型。</param>
		/// <param name="cacheModel">要注册的服务在客户端的缓存模式。</param>
		public static void RegisterService(Container container, Type serviceType, ClientChannelCacheMode cacheModel)
		{
			if (!container.HasComponent(serviceType))
			{
				// 定义并初始化一些必须的变量
				//Type factoryType = typeof(ConcentratedConfigServiceFactory<>);
				Type factoryType = typeof(ServiceFactory<>);
				Type genericFactoryType = factoryType.MakeGenericType(serviceType);

				Dictionary<string, string> parameters = new Dictionary<string, string>(1);
				parameters.Add("cacheModel", cacheModel.ToString());

				// 注意,通过 Container.RegisterFactory 方法在容器中同时注册了两个服务:
				//		1. 服务工厂, 单例模式
				//		2. 服务		 瞬态模式
				// 因此,每次到容器中取得服务都会通过 服务工厂 进行创建,服务实例的缓存机制是我们自己实现的(详见 ServiceFactory 的实现)
				container.RegisterFactory(genericFactoryType, parameters, serviceType, "CreateService", null, LifestyleType.Singleton);
			}
		}
开发者ID:Kjubo,项目名称:xms.core,代码行数:27,代码来源:ConcentratedConfigServiceClient.cs


注:本文中的Container.RegisterFactory方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。