public override void PostBuildUp(IBuilderContext context)
        {
            var contextPolicy = context.Policies.Get <IExternalContextPolicy>(new NamedTypeBuildKey(typeof(IExternalContextObject), "props"));

            if (context.Existing != null && contextPolicy != null)
            {
                PropertyInfo[] properties;
                if (contextPolicy.IsRegistered(context.BuildKey.Type, out properties))
                {
                    foreach (var property in properties)
                    {
                        var obj        = context.Existing;
                        var key        = new NamedTypeBuildKey(property.PropertyType);
                        var mappedName = context.Policies.Get <IBuildKeyMappingPolicy>(key);
                        if (mappedName == null)
                        {
                            mappedName = new BuildKeyMappingPolicy(key);
                        }

                        var lifeTimePolicy = context.Policies.Get <ILifetimePolicy>(mappedName.Map(key, context));
                        if (lifeTimePolicy != null)
                        {
                            var result = lifeTimePolicy.GetValue();
                            property.SetValue(obj, result);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void PolicyReturnsNewBuildKey()
        {
            var policy = new BuildKeyMappingPolicy(new NamedTypeBuildKey<string>());

            Assert.AreEqual(new NamedTypeBuildKey<string>(), policy.Map(new NamedTypeBuildKey<object>(), null));
        }
Exemplo n.º 3
0
        public void PolicyReturnsNewBuildKey()
        {
            var policy = new BuildKeyMappingPolicy(new NamedTypeBuildKey <string>());

            Assert.AreEqual(new NamedTypeBuildKey <string>(), policy.Map(new NamedTypeBuildKey <object>(), null));
        }
Exemplo n.º 4
0
        public void PolicyReturnsNewBuildKey()
        {
            BuildKeyMappingPolicy policy = new BuildKeyMappingPolicy(typeof(string));

            Assert.AreEqual <object>(typeof(string), policy.Map(typeof(object)));
        }