2017-01-04 3 views
0

私は少しこれに固執して、それが完全に可能かどうかわからない。ウェブの検索私はジョー・メイヨーの次のような記事を見つけました:http://mayoster.blogspot.com.es/2016/05/dynamic-formflow-forms-in-bot-builder.htmlここでは、あらかじめ定義されたenumの代わりにDynamic Fieldsを使用する方法について説明しています。ボットフレームワーク - 動的FormFlow前の回答による

これまでのところ、実際の質問は値が「どこかで定義された」ものではなく、代わりにFormFlowの以前の回答に依存しているということになります。これは可能ですか? ?「HERE // PREVIOUS ANSWER」

public static IForm<ItemQueue> BuildForm() 
    { 

     return new FormBuilder<ItemQueue>()     
      .Field(nameof(ItemQueue.ItemFamily)) 
      .Field(nameof(ItemQueue.ItemType)) 
      .Field(new FieldReflector<ItemQueue>(nameof(ItemGroup)) 
       .SetType(null) 
       .SetDefine((state, field) => 
       { 
        List<string> groupList= GetItemGroups(//PREVIOUS ANSWER HERE); 

        foreach (var group in groupList) 
         field 
          .AddDescription(module, module) 
          .AddTerms(module, module); 
        return Task.FromResult(true); 

       })) 
      .AddRemainingFields() 
      .Build() 
      ; 
    } 

一部がゾーンを決定した文字列をロードする必要がありますし、私が考えることができるすべてをしようとしました:。(フォームビルドが

例一斉に行われていることを考慮すると、

いくつかの意見に基づいて明らかに私は答えを得た後、保存された値で新しいFormFlowを開始することができますが、これを行う最もクリーンな方法のようには見えません。

本当にありがとうございました。

ありがとうございます。

答えて

0

最後に理解しました。

は、前のフィールドの状態のために行くと新しい関数に(例えば、文字列として)それを送ることができることを終わる:

public static IForm<ItemQueue> BuildForm() 
{ 

    return new FormBuilder<ItemQueue>()     
     .Field(nameof(ItemQueue.ItemFamily)) 
     .Field(nameof(ItemQueue.ItemType)) 
     .Field(new FieldReflector<ItemQueue>(nameof(ItemGroup)) 
      .SetType(null) 
      .SetDefine((state, field) => 
      { 
       List<string> groupList= GetItemGroups(state.ItemType.ToString()); 

       foreach (var group in groupList) 
        field 
         .AddDescription(module, module) 
         .AddTerms(module, module); 
       return Task.FromResult(true); 

      })) 
     .AddRemainingFields() 
     .Build() 
     ; 
} 

しかし、あなたがいるという事実を用心しなければなりません値は{Get;}に入った後の次のフィールド(存在する場合)にのみ "使用可能"になります。セット;}。それ以外の場合はnullのままです。

ItemGroupフィールドを実行する前に、それはすでに前の1の値を定義し、ので、私の例では、私はitemTypeに値を得ることができ、あります。 選択図】図オーバーライドの外

、あなたが.OnCompletionそれを呼び出すようにしたい場合は、「フィールド」プロパティからそれをしなければなりません。

関連する問題