gpt4 book ai didi

c# - 使用 Ninject 查找实现通用接口(interface)的类

转载 作者:行者123 更新时间:2023-12-01 22:16:16 25 4
gpt4 key购买 nike

使用 Ninject,您可以像这样注册绑定(bind):

Bind(typeof(IQueryHandler<,>)).To(typeof(QueryHandler<,>));

但就我而言,我不知道实际类的名称。我所知道的是它实现了某个接口(interface)。

例如,假设我有以下内容:

public class CreatePageQueryHandler : IQueryHandler<CreatePage, string>
{
public string Retrieve(CreatePage query)
{ ... }
}

只有一个类使用这些通用参数实现接口(interface):IQueryHandler<CreatePage, string>

Ninject 有没有办法动态获取类的实例?像这样的东西:

kernel.Get<IQueryHandler<CreatePage, string>>(); // returns instance of: CreatePageQueryHandler 

请注意:

我不想手动bind这在 RegisterServices方法。我正在寻找一种动态方式来获取类的实例。

最佳答案

Ninject 包含批量注册 API。例如,您可以使用以下绑定(bind):

kernel.Bind(
x => x.FromAssembliesMatching("Fully.Qualified.AssemblyName*")
.SelectAllClasses()
.InheritedFrom(typeof(IQueryHandler<,>))
.BindBase()
);

关于c# - 使用 Ninject 查找实现通用接口(interface)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45323427/

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