public ConfigBuilder WithFoo(ConfigBuilder cb, String foo) { _values["Foo"] = foo; //cb.foo = _values["Foo"]; //return ConfigBuilder(); return(cb); }
public ConfigBuilder WithSub(ConfigBuilder cb, String subfoo, String subbar) { _values["subFoo"] = subfoo; _values["subBar"] = subbar; //cb.foo = _values["Foo"]; //return ConfigBuilder(); return(cb); }
public Config Build(ConfigBuilder cb) { var config = cb.Outconfig; config.Foo = _values["Foo"]; config.SubConfig.Foo = _values["subFoo"]; config.SubConfig.Bar = _values["subBar"]; return(config); }
//to-do: реализовать настройку конфига всеми известными методами static void Main(string[] args) { //как все (1) var config = new Config { Foo = "foo", SubConfig = new SubConfig { Foo = "sub-foo", Bar = "sub-bar", } }; var foo = new Foo(config); //метод расширения класса (2) var extConfig = Config.Default().WithFoo("foo-ext").WithSub("sub-foo-ext", "sub-bar-ext"); var extFoo = new Foo(extConfig); //передачей лямбды нового экземпляра класса конфиг (3) var lambdaconfig = Method(__config => { __config.Foo = "foo-lambda"; __config.SubConfig.Foo = "sub-foo-lambda"; __config.SubConfig.Bar = "sub-bar-labmda"; }); var lambdaFoo = new Foo(lambdaconfig); //создание класса Билдер (4) ConfigBuilder builder = new ConfigBuilder(); builder = builder.WithFoo(builder, "foo-builder").WithSub(builder, "sub-foo-builder", "sub-bar-builder"); var bconfig = builder.Build(builder); var bfoo = new Foo(bconfig); }
public void configBuilder() { ConfigBuilder cb = new ConfigBuilder(); }