Encryption MvvmCross MVX应用程序类覆盖不同平台。(加上加密)
我这里有两个问题。第一个只是具体的,另一个更一般,但却是第一个的来源 因此,我的具体问题是:我希望使用加密(实际上是散列)算法,并使用System.Security.Cryptography名称空间(例如,SHA256Managed类) 我发现(很高兴)Xamarin在中实现了这些。 但是它不可移植,显然不能直接从核心应用程序使用 但我还发现了另一个伟大的项目--允许您这样做。但是,不幸的是,他们没有触摸和安卓的实现。(不过,这对于桌面(Web)和Windows Phone仍然非常有效,而且,它仍然可以包含在Core中(因为它使用portable project)) 无论如何,为了很好地解决这个问题,我决定为加密方法创建一些基类,然后覆盖需要自定义dll的核心方法(对于任何自定义系统) 我做这件事的方式(至少是尝试做)是: 在核心应用程序基类中定义虚拟方法:Encryption MvvmCross MVX应用程序类覆盖不同平台。(加上加密),encryption,touch,urlencode,mvvmcross,Encryption,Touch,Urlencode,Mvvmcross,我这里有两个问题。第一个只是具体的,另一个更一般,但却是第一个的来源 因此,我的具体问题是:我希望使用加密(实际上是散列)算法,并使用System.Security.Cryptography名称空间(例如,SHA256Managed类) 我发现(很高兴)Xamarin在中实现了这些。 但是它不可移植,显然不能直接从核心应用程序使用 但我还发现了另一个伟大的项目--允许您这样做。但是,不幸的是,他们没有触摸和安卓的实现。(不过,这对于桌面(Web)和Windows Phone仍然非常有效,而且,它
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-请参见如何在中执行此操作,例如
对于通用多平台方法,请阅读以下问题和答案:
最后,请试着每个问题问一个问题-我发现它可以让stackoverflow更好地为用户和搜索引擎服务。如果您需要链接问题,那么您只需添加一个超链接引用—stackoverflow,然后将它们标记为相关。好吧,这并不是当场提出不同问题的真正意义,但主要是为了说明问题。但是,我仍然不能完全理解你关于PCLs的观点:“请记住,你不必使用PCLs——如果你愿意……”。因为:a)PclContrib(带加密)是一个“半成品”,因为它作为便携设备使用非常方便,但它仍然缺乏与Android的联系,所以我必须在两者之间创建一些东西(因此,我别无选择)。b) 我确实想使用PCLs,但在这方面有点迷失了!
public class AppTouch : App
protected override Cirrious.MvvmCross.ViewModels.IMvxApplication CreateApp (
{
return new AppTouch();
}