在更新到MvvmCross 6.1.2之后,我的代码告诉我App类必须具有无参数构造函数。问题是直到现在,我仍使用它的构造函数将文件路径传递给数据库到应用程序。
var dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "MyDatabase.db");
return new App(dbPath);
应该有一种方法可以执行此操作,但是我还没有找到有关MvvmCross 6.0的信息。有人可以帮我吗?
答案 0 :(得分:0)
方法1:
您可以使用Mvx
注册,而不是将数据库路径传递给App构造函数,而将其传递给Core。
public interface IDBPathService
{
string GetDBPath();
}
public class DBPathService : IDBPathService
{
public string GetDBPath()
{
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "MyDatabase.db");
}
}
在App.cs
类中,应该使用Initailize
方法来注册该实现,
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
现在您可以使用
var dbpath = Mvx.Resolve<IDBPathService>().GetDBPath();
方法2:
另一种更简单的方法是将静态属性带入您的App.cs
类中,并直接从类似Native的项目中分配路径。
在App.cs
类中定义一个静态属性:
public static string DBPath;
在特定于平台的项目中,分配路径,例如:
App.DBPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "MyDatabase.db");