public void Test04AutoFacLifeTimeScope()
        {
            //Setup
            var builder = new ContainerBuilder();

            builder.RegisterType <SimpleClass>().As <ISimpleClass>().InstancePerLifetimeScope();
            var container = builder.Build();

            //Attempt and VERIFY
            ISimpleClass scope1Instance1;
            ISimpleClass scope1Instance2;

            using (var lifetimeScope = container.BeginLifetimeScope())
            {
                scope1Instance1 = lifetimeScope.Resolve <ISimpleClass>();
                scope1Instance2 = lifetimeScope.Resolve <ISimpleClass>();
                Assert.NotNull(scope1Instance1);
                Assert.NotNull(scope1Instance2);
                Assert.AreSame(scope1Instance1, scope1Instance2);
            }

            using (var lifetimeScope = container.BeginLifetimeScope())
            {
                ISimpleClass scope2Instance1 = lifetimeScope.Resolve <ISimpleClass>();
                Assert.NotNull(scope2Instance1);
                Assert.NotNull(scope1Instance1);
                Assert.NotNull(scope1Instance2);
                Assert.AreNotSame(scope1Instance1, scope2Instance1);
                Assert.AreNotSame(scope1Instance1, scope2Instance1);
            }
        }
예제 #2
0
        public void Setup()
        {
            var container = new Container();

            container.Bind <ISimpleClass, SimpleClass>();

            instance = container.Get <ISimpleClass>();
        }
예제 #3
0
        public static void Assert_AreEqualButNotSame_ChooseForType(ISimpleClass s, ISimpleClass sCopy)
        {
            if (s == null && sCopy == null)
            {
                return;
            }

            if (s is ComplexClass)
            {
                Assert_AreEqualButNotSame((ComplexClass)s, (ComplexClass)sCopy);
            }
            else if (s is ModerateClass)
            {
                ModerateClassTests.Assert_AreEqualButNotSame((ModerateClass)s, (ModerateClass)sCopy);
            }
            else
            {
                SimpleClassTests.Assert_AreEqualButNotSame((SimpleClass)s, (SimpleClass)sCopy);
            }
        }
예제 #4
0
        public static ComplexClass CreateForTests()
        {
            var complexClass = new ComplexClass();

            var dict1 = new DerivedDictionary <string, SimpleClass>();

            complexClass.SampleDictionary = dict1;

            dict1[typeof(ComplexClass).ToString()]  = new ComplexClass();
            dict1[typeof(ModerateClass).ToString()] = new ModerateClass(1, true, "madeInComplexClass");
            dict1[typeof(SimpleClass).ToString()]   = new SimpleClass(2, false, "madeInComplexClass");

            var dict2 = complexClass.ISampleDictionary;

            dict2[typeof(ComplexClass).ToString()]  = dict1[typeof(ComplexClass).ToString()];
            dict2[typeof(ModerateClass).ToString()] = dict1[typeof(ModerateClass).ToString()];
            dict2[typeof(SimpleClass).ToString()]   = new SimpleClass(2, false, "madeInComplexClass");

            var array1 = new ISimpleClass[2, 1, 1];

            array1[0, 0, 0] = new SimpleClass(4, false, "madeForMultiDimArray");
            array1[1, 0, 0] = new ComplexClass();
            complexClass.ISimpleMultiDimArray = array1;

            var array2 = new SimpleClass[2][][];

            array2[1]       = new SimpleClass[2][];
            array2[1][1]    = new SimpleClass[2];
            array2[1][1][1] = (SimpleClass)array1[0, 0, 0];
            complexClass.SimpleMultiDimArray = array2;

            complexClass.StructArray    = new Struct[2];
            complexClass.StructArray[0] = new Struct(1, complexClass, SimpleClass.CreateForTests(5));
            complexClass.StructArray[1] = new Struct(3, new SimpleClass(3, false, "inStruct"), SimpleClass.CreateForTests(6));

            return(complexClass);
        }
예제 #5
0
 public DeepClassWithAutoFactory(Func <ISimpleClass> factory)
 {
     simpleClass = factory();
 }
예제 #6
0
 public DeepDepClass(ISimpleClass sinmpleClass)
 {
     this.sinmpleClass = sinmpleClass;
 }
예제 #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NinjectExample.Models.ClassWithDependancy"/> class.
 /// </summary>
 /// <param name='simpleClass'>
 /// Simple class.
 /// </param>
 public ClassWithDependancy(ISimpleClass simpleClass)
 {
     this.SimpleClass = simpleClass;
 }
예제 #8
0
 public DependantClass(ISimpleClass dependancy)
 {
     Dependancy = dependancy;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="NinjectExample.Models.ClassWithDependancyAlso"/> class.
 /// </summary>
 /// <param name='simpleClass'>
 /// Simple class.
 /// </param>
 public ClassWithDependancyAlso(ISimpleClass simpleClass)
 {
     this.SimpleClass = simpleClass;
 }