【问题标题】:MvvmCross MvxApplication class overriding for different platforms. (Plus, encryption)MvvmCross MvxApplication 类覆盖不同平台。 (另外,加密)
【发布时间】: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


    【解决方案1】:

    对于“未找到视图模型”问题,这是因为默认情况下 mvvmcross 仅在包含您的应用的程序集中查找视图模型。

    如果您希望它查看其他程序集,请覆盖 Setup.cs 中的 ViewModelAssemblies - 看看这是如何完成的,例如,MvvmCross - structuring shared View Models and Views


    对于一般的多平台方法,请阅读以下问题和答案:

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


    最后,请尝试对每个问题提出一个问题 - 我发现它使 stackoverflow 更适合用户和搜索引擎。如果您需要链接问题,那么您只需添加一个超链接引用 - stackoverflow 然后将它们标记为相关。

    【讨论】:

    • 嗯,这并不是在现场提出不同问题的真正意义,而主要是为了说明问题。但是,我仍然没有完全理解您关于 PCL 的说法:“请记住,您不必使用 PCL - 如果您愿意的话……”。因为:a) PclContrib (with Encryption) 是一个“半成品”的东西,因为它作为便携使用真的很方便,但它仍然缺乏与 Android 的 Touch,所以我必须在两者之间创造一些东西(所以,我别无选择)。 b) 我确实想使用 PCL,但有点迷失在这些东西上!
    猜你喜欢
    • 1970-01-01
    • 2022-12-21
    • 2016-01-06
    • 2020-05-05
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多