static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            //メタデータ取得
            JsonContext context = new JsonContext();
            IEnumerable <MetaDataModel> metaData = context.Select <MetaDataModel>("JsonMetaData.json");

            //データ取得
            IEnumerable <TestModel> testModel = context.Select <TestModel>("JsonData.json");

            //変換用ホルダー作成
            //TODO 複数の場合は? => modelが必ずしもcollectionではないことを考えると外から繰り返し処理
            //collectionはどこにもつ? => holderもしくはもたずにシナリオで外から順に与える
            ModelInfoHolder holder = new ModelInfoHolder(testModel, metaData);

            //変換処理の実行
            FromModelToDictionaryBuilder builder = new FromModelToDictionaryBuilder();
            //FromModelToJsonBuilder builder = new FromModelToJsonBuilder();
            //FromModelToDuplicateKeyDictionaryBuilder builder = new FromModelToDuplicateKeyDictionaryBuilder();
            //FromModelToDuplicateKVBuilder builder = new FromModelToDuplicateKVBuilder();
            Director director = new Director(builder, holder);

            director.ConvertModel();

            IModel toModel = holder.GetToModel();
            IEnumerable <IModel> toModelCollection = holder.GetToModelCollection();

            Console.WriteLine(toModel);
        }
 public void SetHolder(ModelInfoHolder modelInfoHolder)
 {
     this.ModelInfoHolder = modelInfoHolder;
 }
 public Director(IBuilder builder, ModelInfoHolder modelInfoHolder)
 {
     builder.SetHolder(modelInfoHolder);
     this.Builder = builder;
     this.Builder.SetHolder(modelInfoHolder);
 }