2013-06-23 30 views
0

我有兩個問題在這裏。第一個只是具體和另一個是更多一般,但是第一個來源。MvvmCross MvxApplication類覆蓋不同的平臺。 (加號,加密)

所以,我的具體問題:我想使用加密(實際上,散列),但以System.Security.Cryptography命名空間的算法(例如,SHA256Managed類)。

我發現(愉快地)Xamarin已經在System.dll中實現了那些。 但是它不是便攜式的,顯然不能直接使用核心應用程序

但我還發現了另一個偉大的項目 - PclContrib - 其中允許你這樣做。但不幸的是,他們沒有Touch和Android的實現。 (但是,這對桌面(Web)和Windows Phone仍然有用,而且還可以包含在Core中(因爲它使用便攜式項目))。

總之,要解決很好,我決定創建加密方法的一些基類,然後覆蓋需要定製的DLL(對於任何自定義系統)的核心方法。

我做到了(至少,試圖做)的樣子:

定義在核心應用基類虛方法

public virtual IEncryptionProvider CreateEncryptionProvider() 

重寫核心應用類觸摸項目重寫CreateEncryptionProvider(它創建TouchEncryptionProvider類實例的一個實例)。

核心:

public class App : MvxApplication 

觸摸:

public class AppTouch : App 

啓動它觸摸setup.cs

protected override Cirrious.MvvmCross.ViewModels.IMvxApplication CreateApp (
{ 
    return new AppTouch(); 
} 

但是,這不起作用給我。在啓動時,我得到了在日誌中異常消息: 異常屏蔽KeyNotFoundException:找不到視圖 Mynamespace.Etc.LoginViewModel」,當我做新的App(),而不是這工作正常。我不確定這個消息是否顯示了實際問題(就像以前它說的一樣,即使這是一些第三方DLL的問題,與觀點無關)。但不久上講,這只是應用程序的原始繼承:MvxApplication,但放置沒有核心,但觸摸項目

那麼,它是否需要一些更多的自定義初始化這種情況下,或者我想念別的東西?


而且,實際上,更普遍的問題是我應該如何建立這樣多接近?實際上,現在我遇到了類似的問題,我想在我的Core項目中使用HttpUtility.UrlEncode。


什麼是MvvmCross「哲學」來處理這種情況?

謝謝。

回答

1

對於'viewmodel not found'問題,這是由於默認情況下,mvvmcross只會在包含您的應用的程序集中查找viewmodels。

如果你想讓它在其他組件看,覆蓋ViewModelAssemblies在Setup.cs - 看到這是如何做到的,例如,MvvmCross - structuring shared View Models and Views


對於一般multplatform方法,請閱讀問題和答案,如:

還請記住,您不必使用PCL - 如果您更喜歡使用多個平臺特定的核心項目之間的文件鏈接,那麼您當然可以使用這種方法。


最後,也請試着問每個問題一個問題 - 我覺得它使計算器的工作更好地爲用戶和與搜索引擎了。如果你需要鏈接問題,那麼你可以添加一個超鏈接引用 - stackoverflow然後將它們標記爲相關的。

+0

那麼,這並不是真正意義上的問題,而是主要是爲了說明問題。但是,我仍然沒有完全聽到你對PCLs的說法:「還請記住你不必使用PCL--如果你願意......」。因爲:a)PclContrib(帶有加密)是一個「半完成」的事情,因爲它非常便於使用,但它仍然缺乏Android的Touch,所以我必須在兩者之間創造一些東西(所以,我別無選擇)。 b)我確實想要使用PCL,但是在這個東西上有點失落! – Agat