Я пытаюсь создать специальные диалоги пользователей и разговоров с помощью json-схемы, и у меня есть запросы LINQ, которые отлично генерируют json. Если я сохраню образец json на диск и использую его как аннотированный и примерный пример, где он читается из файла на диске, он отлично работает. Json уникален для пользователя и разговора, и вместо записи на диск я хочу использовать его в памяти. Я не вижу, как передать строку json методу BuildJsonForm или поочередно, как получить информацию userID в методе BuildJsonForm, чтобы генерировать json на основе пользователя и разговора. Я знаю, что мне не хватает чего-то, что позволит мне это сделать, но я не нахожу его. Любая помощь в том, как это должно быть сделано, будет оценена по достоинству. Спасибо.Использование Json для создания FormDialog
1
A
ответ
0
Вместо того чтобы делать (с помощью кода AnnotatedSandwich)
FormDialog.FromForm(SandwichOrder.BuildJsonForm)
Вы можете просто построить BuildFormDelegate и передать ваши параметры:
string schema = "your jsonform schema";
BuildFormDelegate<JObject> formDelegate =() => SandwichOrder.BuildJsonForm(schema);
FormDialog.FromForm(formDelegate)
0
Создание пользовательской формы строителя, который вы передаете свой собственный вид json schema
[Serializable]
public class CustomFormBuilder
{
public string FormJson { get; set; }
public CustomFormBuilder(string formJson)
{
FormJson = formJson;
}
public IForm<JObject> BuildJsonForm()
{
var schema = JObject.Parse(FormJson);
var form = new FormBuilderJson(schema)
.AddRemainingFields()
.Build();
return form;
}
}
Использовать следующим образом (где formJson is y наша специальная анкета)
var formBuilder = new CustomFormBuilder(formJson);
var jsonFormDialog = FormDialog.FromForm(
formBuilder.BuildJsonForm,
FormOptions.PromptInStart);
Это позволит избежать блокировки ClosureCaptureExcept.
ejadib, большое спасибо за предложение. Я попробовал, но когда я запускаю пример, я получаю ClosureCaptureException: «Закрытие анонимного метода, которое захватывает среду, не сериализуемо, подумайте об удалении захвата среды или использовании суррогата сериализации отражения: {экземпляр}». Любые мысли о том, как я избегаю этого? – wjvii