示例#1
0
 public ObjectWithPrimitives(bool isCool, int myAge, ComplexObjectWithTwoDependencies complexObject)
 {
     IsCool = isCool;
     MyAge = myAge;
     ComplexObject = complexObject;
 }
        public void should_be_able_to__do_custom_wiring()
        {
            var complexObject = new ComplexObjectWithTwoDependencies(new SimpleObjectType(),
                new ObjectWithOneDependency(new SimpleObjectType()))
            {
                Id = Guid.NewGuid(),
                OneDependencyObject = { Id = Guid.NewGuid() },
                SimpleObjectType = { Id = Guid.NewGuid() }
            };

            ObjectFactory.Configure(x =>
            {
                x.Add<ObjectWithPrimitives>()
                    .WithCustomConstructor(new Dictionary<string, object>()
                                                                {
                                                                    {"isCool", true},
                                                                    {"myAge", 31},
                                                                    {"complexObject",complexObject}
                                                                });
                x.Add<ComplexObjectWithTwoDependencies>();

            });

            var primitiveObject = ObjectFactory.GetInstance<ObjectWithPrimitives>();

            Assert.AreEqual(primitiveObject.IsCool, true);
            Assert.AreEqual(primitiveObject.MyAge, 31);

            Assert.AreEqual(primitiveObject.MyAge, 31);
            Assert.IsNotNull(primitiveObject.ComplexObject);
            Assert.IsNotNull(primitiveObject.ComplexObject.OneDependencyObject);
            Assert.IsNotNull(primitiveObject.ComplexObject.SimpleObjectType);

            Assert.AreEqual(complexObject.Id, primitiveObject.ComplexObject.Id);
            Assert.AreEqual(complexObject.OneDependencyObject.Id, primitiveObject.ComplexObject.OneDependencyObject.Id);
            Assert.AreEqual(complexObject.SimpleObjectType.Id, primitiveObject.ComplexObject.SimpleObjectType.Id);
        }