本文整理汇总了C#中UnityContainer.CreateChildContainer方法的典型用法代码示例。如果您正苦于以下问题:C# UnityContainer.CreateChildContainer方法的具体用法?C# UnityContainer.CreateChildContainer怎么用?C# UnityContainer.CreateChildContainer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UnityContainer
的用法示例。
在下文中一共展示了UnityContainer.CreateChildContainer方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ChildBuildsUsingParentsConfiguration
public void ChildBuildsUsingParentsConfiguration()
{
UnityContainer parent = new UnityContainer();
parent.RegisterType<ILogger, MockLogger>();
IUnityContainer child = parent.CreateChildContainer();
ILogger logger = child.Resolve<ILogger>();
Assert.NotNull(logger);
AssertExtensions.IsInstanceOfType(logger, typeof(MockLogger));
}
示例2: NamesRegisteredInParentAppearInChild
public void NamesRegisteredInParentAppearInChild()
{
UnityContainer parent = new UnityContainer();
parent.RegisterType<ILogger, SpecialLogger>("special");
IUnityContainer child = parent.CreateChildContainer();
ILogger l = child.Resolve<ILogger>("special");
Assert.IsInstanceOfType(l, typeof(SpecialLogger));
}
示例3: ChangeInParentConfigurationIsReflectedInChild
public void ChangeInParentConfigurationIsReflectedInChild()
{
UnityContainer parent = new UnityContainer();
parent.RegisterType<ILogger, MockLogger>();
IUnityContainer child = parent.CreateChildContainer();
ILogger first = child.Resolve<ILogger>();
parent.RegisterType<ILogger, SpecialLogger>();
ILogger second = child.Resolve<ILogger>();
AssertExtensions.IsInstanceOfType(first, typeof(MockLogger));
AssertExtensions.IsInstanceOfType(second, typeof(SpecialLogger));
}
示例4: ChildConfigurationOverridesParentConfiguration
public void ChildConfigurationOverridesParentConfiguration()
{
UnityContainer parent = new UnityContainer();
parent.RegisterType<ILogger, MockLogger>();
IUnityContainer child = parent.CreateChildContainer()
.RegisterType<ILogger, SpecialLogger>();
ILogger parentLogger = parent.Resolve<ILogger>();
ILogger childLogger = child.Resolve<ILogger>();
Assert.IsInstanceOfType(parentLogger, typeof(MockLogger));
Assert.IsInstanceOfType(childLogger, typeof(SpecialLogger));
}
示例5: NamesRegisteredInParentAppearInChildGetAll
public void NamesRegisteredInParentAppearInChildGetAll()
{
string[] databases = { "northwind", "adventureworks", "fabrikam" };
UnityContainer parent = new UnityContainer();
parent.RegisterInstance<string>("nwnd", databases[0])
.RegisterInstance<string>("advwks", databases[1]);
IUnityContainer child = parent.CreateChildContainer()
.RegisterInstance<string>("fbkm", databases[2]);
List<string> dbs = new List<string>(child.ResolveAll<string>());
CollectionAssert.AreEquivalent(databases, dbs);
}
示例6: CanDisposeChildWithoutDisposingParent
public void CanDisposeChildWithoutDisposingParent()
{
DisposableObject parentSpy = new DisposableObject();
DisposableObject childSpy = new DisposableObject();
UnityContainer parent = new UnityContainer();
parent.RegisterInstance(parentSpy);
IUnityContainer child = parent.CreateChildContainer()
.RegisterInstance(childSpy);
child.Dispose();
Assert.False(parentSpy.WasDisposed);
Assert.True(childSpy.WasDisposed);
childSpy.WasDisposed = false;
parent.Dispose();
Assert.True(parentSpy.WasDisposed);
Assert.False(childSpy.WasDisposed);
}
示例7: DisposingParentDisposesChild
public void DisposingParentDisposesChild()
{
UnityContainer parent = new UnityContainer();
IUnityContainer child = parent.CreateChildContainer();
DisposableObject spy = new DisposableObject();
child.RegisterInstance<DisposableObject>(spy);
parent.Dispose();
Assert.True(spy.WasDisposed);
}
示例8: ChildExtensionDoesntAffectParent
public void ChildExtensionDoesntAffectParent()
{
bool factoryWasCalled = false;
UnityContainer parent = new UnityContainer();
IUnityContainer child = parent.CreateChildContainer()
.RegisterType<object>(new InjectionFactory(c =>
{
factoryWasCalled = true;
return new object();
}));
parent.Resolve<object>();
Assert.False(factoryWasCalled);
child.Resolve<object>();
Assert.True(factoryWasCalled);
}
示例9: ChildContainerCreatedEventGivesChildContainerToExtension
public void ChildContainerCreatedEventGivesChildContainerToExtension()
{
var mockExtension = new MockContainerExtension();
ExtensionContext childContext = null;
var container = new UnityContainer()
.AddExtension(mockExtension);
mockExtension.Context.ChildContainerCreated += (sender, ev) =>
{
childContext = ev.ChildContext;
};
var child = container.CreateChildContainer();
Assert.AreSame(child, childContext.Container);
}
示例10: ContainerRaisesChildContainerCreatedToExtension
public void ContainerRaisesChildContainerCreatedToExtension()
{
bool childContainerEventRaised = false;
var mockExtension = new MockContainerExtension();
var container = new UnityContainer()
.AddExtension(mockExtension);
mockExtension.Context.ChildContainerCreated += (sender, ev) =>
{
childContainerEventRaised = true;
};
var child = container.CreateChildContainer();
Assert.IsTrue(childContainerEventRaised);
}
示例11: FactoryRecievesCurrentContainerWhenUsingChild
public void FactoryRecievesCurrentContainerWhenUsingChild()
{
IUnityContainer parent = new UnityContainer();
IUnityContainer child = parent.CreateChildContainer();
parent
.AddNewExtension<StaticFactoryExtension>()
.Configure<StaticFactoryExtension>()
.RegisterFactory<MockDatabase>(
c =>
{
Assert.AreSame(child, c);
return MockDatabase.Create("connectionString");
});
var db = child.Resolve<MockDatabase>();
}
示例12: FactoryRecievesCurrentContainerWhenUsingChildWhenUsingInjectionFactory
public void FactoryRecievesCurrentContainerWhenUsingChildWhenUsingInjectionFactory()
{
bool factoryWasCalled = false;
IUnityContainer parent = new UnityContainer();
IUnityContainer child = parent.CreateChildContainer();
parent.RegisterType<MockDatabase>(
new InjectionFactory(c => {
factoryWasCalled = true;
Assert.AreSame(child, c);
return MockDatabase.Create("connectionString");
}));
child.Resolve<MockDatabase>();
Assert.IsTrue(factoryWasCalled);
}