#c_sharp #uwp
Случилось несчастье - мне необходимо написать приложение на UWP. Разумеется, проектирую все по модели MVC. Тестировать и разрабатывать модели мне намного удобнее в консольном приложении, и так часто случается, что те классы, которые прекрасно работали для консольного app не находят определения классов в приложении UWP и наоборот. Так как писать максимально кроссплатформенно? Я понимаю, например, класс для работы с камерой может не работать в консольном приложении, но чтобы не работали классы шифрования или сериализации...тут уж прошу простить меня - в ад разработчиков этого всего! У меня есть библиотека, но при ее подключении мне вылетает ошибка: Если же я создаю переносимую библиотеку и указываю целевую платформу UWP, то он не знает о существовании таких классов как: BinaryFormatter, Aes, AesCryptoServiceProvider, CryptoStream, Serializable. Это, в принципе, логично, потому что их не удосужились добавить в UWP! Кроме как писать свои алгоритмы реализации, можно как-то перенести эти классы? Существует ли хоть какая-то кроссплатформенность???
Ответы
Ответ 1
Бинарная сериализация существенно зависима от рефлексии и динамической генерации кода, поэтому она, к сожалению, недоступна в ограниченных подмножествах .NET (UWP/Silverlight/.NET Core). Возможно, имеет смысл перейти на XML-сериализацию или DataContractSerializer. А с криптографией всё не так плохо! Просто она «переехала» в другой namespace. Вам нужно использовать SymmetricKeyAlgorithmProvider.OpenAlgorithm с одним из AES-параметров, полный список тут. Возможно, эта часть кода не будет легко переносима на десктоп. Для этого по идее в Universal App можно выделить общую и платформозависимую части.
Комментариев нет:
Отправить комментарий