【发布时间】:2013-06-23 19:03:16
【问题描述】:
我有两个问题。第一个只是特定,另一个更通用,但它是第一个的来源。
所以,我的具体问题是:我希望 使用加密(实际上是散列)算法和使用 System.Security.Cryptography 命名空间(例如,SHA256Managed 类)。
我发现(很高兴)Xamarin 已经在System.dll 中实现了这些功能。 但它不可移植,显然不能从核心应用程序直接使用。
但我还发现了另一个很棒的项目——PclContrib——允许你这样做。但是,不幸的是,他们没有 Touch 和 Android 的实现。 (但是,这仍然适用于桌面(Web)和 Windows Phone,此外,仍然可以包含在 Core 中(因为它使用可移植项目)。
无论如何,为了很好地解决这个问题,我决定为加密方法创建一些基类,然后覆盖需要自定义 dll 的核心方法(对于任何自定义系统)。
我这样做的方式(至少,尝试这样做)是:
在Core App基类中定义虚方法:
public virtual IEncryptionProvider CreateEncryptionProvider()
在 Touch 项目中重写 Core App 类,并重写 CreateEncryptionProvider(创建 TouchEncryptionProvider 类实例的实例)。
核心:
public class App : MvxApplication
触摸:
public class AppTouch : App
在Touch setup.cs中启动它:
protected override Cirrious.MvvmCross.ViewModels.IMvxApplication CreateApp (
{
return new AppTouch();
}
但是,对我不起作用。启动时,我在日志中收到此异常消息: “Exception masked KeyNotFoundException: Could not find view for Mynamespace.Etc.LoginViewModel”,在我执行 new App() 时效果很好。我不确定该消息是否显示实际问题(就像之前所说的一样,即使这是某些第三方 dll 的问题,与视图完全无关)。但简而言之,这只是 App 的原始继承:MvxApplication,但 放置 不是 核心,而是 Touch 项目 .
那么,对于这种情况,它是否需要更多的自定义初始化,还是我错过了其他一些东西?
实际上,更普遍的问题是我应该如何构建这样的多平台方法?实际上,现在我遇到了与 HttpUtility.UrlEncode 类似的问题,我想在我的核心项目中使用它。
MvvmCross 处理这种情况的“哲学”是什么?
谢谢。
【问题讨论】:
标签: encryption touch urlencode mvvmcross