У меня есть два приложения, которые общаются друг с другом удаленно. Одно приложение (назовите его «A») должно определить некоторую пользовательскую грамматику для механизма распознавания речи, работающего в удаленном приложении UWP (назовите это одно приложение «B»). Я хотел бы использовать пользовательский класс, который инкапсулирует правила грамматики, а также некоторые другие вспомогательные данные, и, поскольку этот класс должен пересекаться между полной платформой .NET (4.7) и платформой UWP, я собираюсь реализовать ее в .NET Стандартная библиотека классов 2.0, на которую ссылаются оба приложения. Что касается грамматики, то наилучшим способом, по-видимому, являются ограничения SRGS, заданные как XML (https://docs.microsoft.com/en-us/windows/uwp/design/input/define-custom-recognition-constraints), поскольку и приложение A, и B смогут создавать Xml. Я предполагаю, что Xml будет создаваться программно или загружаться из файла Инкапсулированные объекты пользовательской грамматики будут созданы в приложении A, а затем переданы в приложение B и, как правило, будут выглядеть примерно так:
public class MyCustomGrammarStuff()
{
public Int32 Data1 { get; set; }
public Int32 Data2 { get; set; }
public String Stuff { get; set; }
public XmlDocument GrammarRules {get; set; } // Loaded from file or created in code.
}
Когда приложение A получает этот объект, оно должно затем создать экземпляр объекта «SpeechRecognitionGrammarFileConstraint», используя «GrammarRules» в объекте «MyCustomGrammarStuff». Согласно документации для этого класса (https://docs.microsoft.com/en-us/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionGrammarFileConstraint) конструктор принимает аргумент типа "Windows.Storage.StorageFile".
У меня вопрос, как мне взять объект XmlDocument и использовать его для программной реализации объекта StorageFile? Я бы предпочел не начинать делать такие вещи, как запись / загрузка из временных файлов.