在PCL插件中,我有一個接口,稱之爲IFile。在我的各種平臺中,PlatformFile。我可以使用Mvx.RegisterType註冊,這樣Mvx.Resolve會給我一個PlatformFile的IFile。其中PlatformFile構造函數有一個參數,可以說這個名字讓如何將參數傳遞給MvvmCross中的IOC構造函數?
公共PlatformFile(字符串名稱)
如何Mvx.Resolve,並通過在名字?
在PCL插件中,我有一個接口,稱之爲IFile。在我的各種平臺中,PlatformFile。我可以使用Mvx.RegisterType註冊,這樣Mvx.Resolve會給我一個PlatformFile的IFile。其中PlatformFile構造函數有一個參數,可以說這個名字讓如何將參數傳遞給MvvmCross中的IOC構造函數?
公共PlatformFile(字符串名稱)
如何Mvx.Resolve,並通過在名字?
當您創建該類的新實例時,您可以調用PlatformFile的構造函數,然後通過調用Mvx.RegisterSingleton將其註冊爲單例。調用Mvx.Resolve,將允許您解決該類的實例。
你根本無法按照你所嘗試的方式做到這一點。
IoC/Service位置建立在C#接口之上。
接口提供contracts
在屬性和方法方面 - 但他們做而不是包含構造函數。
正常方式這種類型的場景是提供一種用於IFileFactory
的接口 - 此工廠然後可以提供一個Create
方法返回一個IFile
- 例如
public interface IFileFactory
{
IFile Create(string name);
}
這是在(例如)所述MvvmCross SQLite的插件所採取的做法 - https://github.com/MvvmCross/MvvmCross-SQLite/blob/master/Sqlite/Cirrious.MvvmCross.Community.Plugins.Sqlite/BaseClasses.cs - 其與IoC容器
public interface ISQLiteConnectionFactory
{
ISQLiteConnection Create(string address);
}
更多關於IoC的看到https://github.com/MvvmCross/MvvmCross/wiki/Service-Location-and-Inversion-of-Control
註冊一個ISQLiteConnectionFactory
對象