Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- static void Main(string[] args)
- {
- UniversalComposition universe = new UniversalComposition();
- }
- }
- public class UniversalComposition : Composition
- {
- // Everything that gets resolved in this container should contain a child container created by the this container
- public UniversalComposition()
- {
- this.Container.RegisterType<IService, Service>();
- }
- protected override IUnityContainer CreateContainer()
- {
- return new UnityContainer();
- }
- }
- public abstract class Composition
- {
- protected IUnityContainer Container {get; private set;}
- public Composition()
- {
- this.Container = this.CreateContainer();
- }
- public TInstance Resolve<TInstance>()
- {
- return this.Container.Resolve<TInstance>();
- }
- protected abstract IUnityContainer CreateContainer();
- }
- public class Service : Composition, IService
- {
- public Service(/* I want to inject a child Unity Container in here container.CreateChildContainer() */)
- {
- }
- }
- public interface IService { }
- public abstract class BaseClass
- {
- public IUnityContainer Container { get; protected set; }
- public BaseClass() : BaseClass(null) {}
- public BaseClass( IUnityContainer container )
- {
- this.container = container ?? this.CreateContainer();
- }
- public abstract IUnityContainer CreateContainer();
- }
- public class DerivedClass : BaseClass
- {
- public IUnityContainer ChildContainer { get; private set; }
- public DerivedClass() : DerivedClass(null,null) {}
- public DerivedClass( IUnityContainer parent, IUnityContainer child )
- : BaseClass( parent )
- {
- this.ChildContainer = child ?? this.CreateChildContainer();
- }
- public IUnityContainer CreateContainer()
- {
- return new UnityContainer();
- }
- public IUnityContainer CreateChildContainer()
- {
- return this.Container.CreateChildContainer();
- }
- }
Add Comment
Please, Sign In to add comment