public void ThrowsOnReRegister()
        {
            var tiny = new TinyContainer();

            tiny.Register <Simple>();

            Assert.ThrowsException <TinyError>(() => tiny.Register <Simple>());
            Assert.ThrowsException <TinyError>(() => tiny.Register(factory => new Simple()));
        }
        protected override ContainerFor <T> CreateSut <T>()
        {
            var container = new TinyContainer();

            container.Register <IDependency1, Dependency1>();
            container.Register <IDependency2, Dependency2>();
            container.Register <ConcreteObjectWithNoConstructor>();
            container.Register <ConcreteObjectWithMultipleConstructors>();
            return(new ContainerFor <T>(container));
        }
        public void Class()
        {
            var tiny = new TinyContainer();

            tiny.Register <Simple>();

            Assert.IsNotNull(tiny.Resolve <Simple>());
        }
        public void WithFactory()
        {
            var tiny = new TinyContainer();

            tiny.Register(factory => new Simple());

            Assert.IsNotNull(tiny.Resolve <Simple>());
        }
        public void Interface()
        {
            var tiny = new TinyContainer();

            tiny.Register <ISimple, Simple>();

            Assert.IsNotNull(tiny.Resolve <ISimple>());
        }
        public void Delegate()
        {
            var tiny = new TinyContainer();

            tiny.Register <Simple>()
            .Register <Func <Simple> >(factory => factory.Resolve <Simple>);

            Assert.IsNotNull(tiny.Resolve <Func <Simple> >()());
        }
        public void ComplexClass()
        {
            var tiny = new TinyContainer();

            tiny.Register <Simple>()
            .Register <ISimple, Simple>()
            .Register <Func <Simple> >(factory => () => new Simple())
            .Register <IComplex, Complex>();

            var simpleInstance = tiny.Resolve <IComplex>();

            Assert.IsNotNull(simpleInstance);
        }
 public static TinyContainer RegisterSignleton <TObject>(this TinyContainer container, TObject instance)
 {
     container.Register(typeof(TObject), new SingletonLifetimeManager(instance));
     return(container);
 }
 public static TinyContainer RegisterTransient <TMappedType, TActualType>(this TinyContainer container, string name = null)
 {
     container.Register(typeof(TMappedType), new TransientLifetimeManager(typeof(TActualType)));
     return(container);
 }