gpt4 book ai didi

c# - Prism依赖注入(inject)接口(interface)对象获取空值

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:13 26 4
gpt4 key购买 nike

我已经在我的 app.cs 文件中注册了一个接口(interface)作为 prism 依赖注入(inject)。

protected override void RegisterTypes()
{
Container.RegisterType<ISqliteCallsService, SqliteCallsService>(new ContainerControlledLifetimeManager());
}

因此,当我创建此依赖项接口(interface)的对象时,它在单独的公共(public)类“SampleClass.cs”中变为 null。

 public class SampleClass
{
ISqliteCallsService _sqliteCallsService;
public SampleClass(ISqliteCallsService sqliteCallsService)
{
_sqliteCallsService = sqliteCallsService;
_sqliteCallsService.SyncOfflineFeedbacktoServer();
}

这里 _sqliteCallsService 得到一个空值。

最佳答案

依赖项通常通过构造函数或属性注入(inject),以便类具有对依赖项的引用。它们不会像您在此处所做的那样神奇地替换为方法参数。

您需要使用 DI 容器解析 SampleClass,并为已解析的类提供一种公开其依赖项的方式,以便它们可以被解析。最简单的解决方案是:

public class SampleClass
{
private ISqlLitCallService _sqlService;

public SampleClass(ISqliteCallsService sqlService)
{
_sqlService = sqlService;
}

public ConnectivitySyncMainLHBackgroundingCode()
{
_sqliteCallsService.SyncOfflineFeedbacktoServer();
}
}

在你的调用类中:

var s = Container.Resolve<SampleClass>();
s.ConnectivitySyncMainLHBackgroundingCode();

关于c# - Prism依赖注入(inject)接口(interface)对象获取空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com