2016-07-29 8 views
1

フォームフローダイアログを持つボットを構築しようとしています。フォームビルダーのフィールドをOptionalにする必要があります。私はクラス属性に[Optional]注釈を付けることで行っています。しかし、それは動作しません。 By Formはフィールドの入力を促します。どのように私はこれを制御できますか?C#ボットフレームワーク:フォームフローダイアログでオプションフィールドを設定する方法

form = new FormBuilder<myClass>() 
        .Message("Welcome") 
        .Field(nameof(xxx)) 
        .Field(nameof(yyy),//make this field optional, if value is there then validate. But should not prompt if no value.       
         validate: async (state, value) => 
         { 
         } 

私のクラス

[Serializable] 
public class myClass 
{ 
    [Prompt("I didnt get you")]  
    public string xxx{ get; set; } 

    [Optional]  
    public string yyy{ get; set; } 

} 

答えて

0

公式ドキュメントで

[Optional] 
public string yyy{ get; set; } 
+0

「タイプ 『string』は、それを使用するために非NULL可能値型でなければなりませんジェネリック型またはメソッド 'Nullable 'のパラメータ 'T'として – Satheesh

+0

コンパイルエラーを修正するために編集されました。 – codekaizen

0

[オプション]カスタム属性のみNULL可能列挙型のプロパティのために使用されてみてくださいが...この場合、それは示してい最後のオプションは "No Preference"とタグ付けされています。デフォルトのプロンプトは、あなたの質問が続い表示された文字列について

。:優先なし 『が、ユーザーはまだ質問に答える必要がある「(現在の選択条件なし)は、それがデフォルト値で満たされていたことを示す』

あなたが特定のルールに基づいて質問をスキップする必要がある場合は、下の例のようにアクティブなプロパティを実装することができますエラーを取得

public static IForm<YourStateClass> Build() 
    { 
    return new FormBuilder<SandwichOrder>() 
    .Field(nameof(PropertyName), active: (state) => { 
      // here goes your code that need to return a boolean where true will show the field and false will skip 
     }) 
    .Build(); 
    } 
関連する問題