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); } }); }
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(); }