示例#1
0
        static PluginCache()
        {
            _setterRules = new List <Predicate <PropertyInfo> >();
            _plugins     = new Cache <Type, Plugin>(t =>
            {
                var plugin = new Plugin(t);
                foreach (var rule in _setterRules)
                {
                    plugin.UseSetterRule(rule);
                }

                return(plugin);
            });


            _builders = new Cache <Type, IInstanceBuilder>(t =>
            {
                try
                {
                    Plugin plugin = _plugins[t];
                    return(BuilderCompiler.CreateBuilder(plugin));
                }
                catch (Exception e)
                {
                    throw new StructureMapException(245, e, t.AssemblyQualifiedName);
                }
            });
        }
示例#2
0
 public IInstanceBuilder CreateBuilder()
 {
     try
     {
         return(BuilderCompiler.CreateBuilder(this));
     }
     catch (Exception e)
     {
         throw new StructureMapException(245, e, _pluggedType.AssemblyQualifiedName);
     }
 }
        public void compile_and_exercise_build_up()
        {
            var args = new StubArguments();

            args.Set("Color", "blue");

            var target = new ConstructorTarget(null, 5, DateTime.Today);

            Action <IArguments, object> action = BuilderCompiler.CompileBuildUp(new Plugin(typeof(ConstructorTarget)));

            action(args, target);

            target.Color.ShouldEqual("blue");
        }
        public void compile_and_exercise_a_builder()
        {
            Func <IArguments, object> func = BuilderCompiler.CompileCreator(new Plugin(typeof(ConstructorTarget)));
            var args = new StubArguments();

            args.Set("name", "Jeremy");
            args.Set("age", 35);
            args.Set("birthDay", new DateTime(2009, 1, 1));

            args.Set("Color", "blue");

            var target = func(args).ShouldBeOfType <ConstructorTarget>();

            target.Name.ShouldEqual("Jeremy");
            target.Age.ShouldEqual(35);
            target.Color.ShouldEqual("blue");

            // Optional wasn't filled in
            target.Direction.ShouldBeNull();
        }