我正在尝试将旧的Prism Xamarin表单项目迁移到最新的Prism和XF版本。
我想注册一个工厂来创建像Func<SQLiteConnection>
这样的连接:
public class AndroidInitializer : IPlatformInitializer
{
string DbFilePath => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "test.db3");
public void RegisterTypes(IContainerRegistry container)
{
container.RegisterSingleton<Func<SQLiteConnection>>(() => new SQLiteConnection(DbFilePath));
}
}
但是这不起作用,没有过载需要像我以前在旧的Prism Unity版本中那样的实例。
答案 0 :(得分:0)
无论您使用哪个容器,ContainerRegistry都是故意基本的,以一致的方式处理您需要的90%以上的注册。您可以继续使用基础容器进行更高级的注册。
对于DryIoc和Unity,它将是:
containerRegistry.GetContainer().SomeContainerSpecificMethod();
其中SomeContainerSpecificMethod
与Prism 6.3中的相匹配
答案 1 :(得分:0)
另一种可能性是使用RegisterInstance注册类的单个实例。不确定是否会影响对象的寿命。
var connection = new SQLiteConnection(DbFilePath)
container.RegisterInstance(connection);