Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Создание 100% кроссплатформенной библиотеки

#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 можно выделить общую и платформозависимую части.

Комментариев нет:

Отправить комментарий