无法使用IServerSideEvents依赖关系进行解析

巴里

扩展:IOC注入IServerSideEvents

我试图在需要IServerSideEvents的容器上设置Singleton(IMessager具有依赖关系)。

 // setup Engine
List<IFileHandler> handler = new List<IFileHandler>() { new FileHandler() };
var engine = new Engine(handler, new List<IFileConverter>());
engine.Fail += container.Resolve<IMessager>().Error;
container.AddSingleton<Engine>(engine);

这是因为我需要在多个控制器中绑定相同的事件,但是这些事件在外部库中。我可以在注入控制器时很好地绑定它们,但是尝试让IOC处理它将无法工作,并返回与上述相同的错误。

我想象这是一个加载顺序问题,当我尝试解决依赖关系时,插件尚未加载。这是在Configure(Container container)方法中提出的

神话

请阅读有关.NET Core容器适配器的部分

注册的任何.NET Core Startup依赖项也可用于ServiceStack,但在ServiceStack的IOC中注册的依赖项仅对ServiceStack可见。

因此,如果您需要ServiceStack和MASP之类的外部ASP.NET Core功能都可用的依赖项,则需要在.NET中注册它们Startup.ConfigureServices()

外挂程式

从您的链接

public override void Configure(Funq.Container container)
{
    var serverEventsFeature = new ServerEventsFeature();
    // bind server events
    serverEventsFeature.Register(this);         
    container.AddSingleton(new Engine(container.Resolve<IServerEvents>()));
}

绝对不要这样直接调用插件,它们应该在Plugins集合中注册:

Plugins.Add(new ServerEventsFeature());

插件是在Configure()运行后注册的,如果您想注册使用所注册的依赖项,IServerEventsServerEventsFeature需要使用工厂函数注册您的依赖项,即:

container.AddSingleton<ICacheClient>(c => 
    new Engine(c.Resolve<IServerEvents>()));

或者,您可以注册一个单例实例,AfterInitCallbacks实例在AppHost初始化结束时运行,例如:

AfterInitCallbacks.Add(host => {
    container.AddSingleton<ICacheClient>(
        new Engine(c.Resolve<IServerEvents>()));
});

如果您想注册其他任何插件都已注册的单例,则可以让您的插件实现IPostInitPlugin,该AfterPluginsLoaded()插件在所有插件注册后运行

public class MyPlugin : IPlugin, IPostInitPlugin
{
    public void Register(IAppHost appHost) {}

    public void AfterPluginsLoaded(IAppHost appHost)
    {
        appHost.GetContainer().AddSingleton<ICacheClient>(c => 
            new Engine(c.Resolve<IServerEvents>()));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

包依赖关系无法解析

如何使用StanfordNLP Python包进行依赖关系解析?

如何使用Java进行拓扑排序(依赖关系解析)

Nest 无法解析 AuthService (?, JwtService) 的依赖关系

找不到工件,无法解析依赖关系

错误:Nest 无法解析 UsersService 的依赖关系

Cabal 无法解析 Idris 的依赖关系

maven 无法解析 jmonkeyengine 的依赖关系

Nest无法解析存储库的依赖关系

NestJs 无法解析 HeicService 的依赖关系

修复“Nest 无法解析 CashInService 的依赖关系”。

使用mvn测试版本号时,Maven无法解析依赖关系

使用VS 2017时无法解析对程序集FSharp.Core 4.4.1.0的依赖关系

使用Cerberus进行依赖关系验证

无法使用转换JetifyTransform解决依赖关系?

将配置的依赖关系包含在Android Studio 3.2.1的依赖关系解析后,无法更改

Maven 无法解析 IntelliJ 中父模块的依赖关系

无法解析的依赖关系为我的Maven项目

GIMP软件包依赖关系无法解析

依赖关系> = 1.0.0-rc1-update1无法解析

React Native:npm链接本地依赖关系,无法解析模块

Laravel'无法解决的依赖关系解析[参数#0 [<必需>“

Spring无法解析List类型的bean的@Bean依赖关系?

Nest js无法解析依赖关系。在Auth服务中

安装包时 ERESOLVE 无法解析依赖关系树

Webpack:使用其他依赖关系而不是其自身的子依赖关系进行依赖

无法纠正依赖关系

使用Cerberus根据条件进行依赖关系验证

如何使用结构/接口模拟依赖关系进行测试