Encryption MvvmCross MVX应用程序类覆盖不同平台。(加上加密)

Encryption MvvmCross MVX应用程序类覆盖不同平台。(加上加密),encryption,touch,urlencode,mvvmcross,Encryption,Touch,Urlencode,Mvvmcross,我这里有两个问题。第一个只是具体的,另一个更一般,但却是第一个的来源 因此,我的具体问题是:我希望使用加密(实际上是散列)算法,并使用System.Security.Cryptography名称空间(例如,SHA256Managed类) 我发现(很高兴)Xamarin在中实现了这些。 但是它不可移植,显然不能直接从核心应用程序使用 但我还发现了另一个伟大的项目--允许您这样做。但是,不幸的是,他们没有触摸和安卓的实现。(不过,这对于桌面(Web)和Windows Phone仍然非常有效,而且,它

我这里有两个问题。第一个只是具体的,另一个更一般,但却是第一个的来源

因此,我的具体问题是:我希望使用加密(实际上是散列)算法,并使用System.Security.Cryptography名称空间(例如,SHA256Managed类)

我发现(很高兴)Xamarin在中实现了这些。 但是它不可移植,显然不能直接从核心应用程序使用

但我还发现了另一个伟大的项目--
允许您这样做。但是,不幸的是,他们没有触摸和安卓的实现。(不过,这对于桌面(Web)和Windows Phone仍然非常有效,而且,它仍然可以包含在Core中(因为它使用portable project))

无论如何,为了很好地解决这个问题,我决定为加密方法创建一些基类,然后覆盖需要自定义dll的核心方法(对于任何自定义系统)

我做这件事的方式(至少是尝试做)是:

核心应用程序基类中定义虚拟方法

public virtual IEncryptionProvider CreateEncryptionProvider()
使用覆盖CreateEncryptionProvider(创建TouchEncryptionProvider类实例)覆盖触摸项目中的核心应用程序类

核心:

触摸:

public class AppTouch : App
在Touch setup.cs中启动it:

但是,这对我来说不起作用。启动时,我在日志中收到以下异常消息: “异常屏蔽KeyNotFoundException:找不到Mynamespace.Etc.LoginViewModel”的视图,当我改为使用new App()时,它可以正常工作。我不确定这条消息是否显示了实际的问题(正如之前所说的一样,即使这是某个第三方dll的问题,与视图无关)。但简而言之,这只是应用程序的原始继承:MvxApplication
,但是不是放在核心,而是触摸项目中

那么,在这种情况下,它是否需要更多的自定义初始化,或者我是否遗漏了其他内容


实际上,更普遍的问题是,我应该如何构建这样的多平台方法?实际上,现在我在HttpUtility.UrlEncode上遇到了类似的问题,我希望在我的核心项目中使用它


处理这种情况的MvvmCross“哲学”是什么


谢谢。

对于“找不到viewmodel”问题,这是因为mvvmcross默认情况下仅在包含应用程序的程序集中查找viewmodels

如果要在其他程序集中查看,请在Setup.cs中重写ViewModelAssembly-请参见如何在中执行此操作,例如


对于通用多平台方法,请阅读以下问题和答案:

还请记住,您不必使用PCL—如果您更喜欢在多个特定于平台的核心项目之间使用文件链接,那么您当然可以使用这种方法



最后,请试着每个问题问一个问题-我发现它可以让stackoverflow更好地为用户和搜索引擎服务。如果您需要链接问题,那么您只需添加一个超链接引用—stackoverflow,然后将它们标记为相关。

好吧,这并不是当场提出不同问题的真正意义,但主要是为了说明问题。但是,我仍然不能完全理解你关于PCLs的观点:“请记住,你不必使用PCLs——如果你愿意……”。因为:a)PclContrib(带加密)是一个“半成品”,因为它作为便携设备使用非常方便,但它仍然缺乏与Android的联系,所以我必须在两者之间创建一些东西(因此,我别无选择)。b) 我确实想使用PCLs,但在这方面有点迷失了!
public class AppTouch : App
protected override Cirrious.MvvmCross.ViewModels.IMvxApplication CreateApp (
{
    return new AppTouch();
}