使用Ninject,您可以注册如下绑定:
Bind(typeof(IQueryHandler<,>)).To(typeof(QueryHandler<,>));
但就我而言,我不知道实际班级的名称。我所知道的是它实现了特定的接口。
因此,例如,假设我有以下内容:
public class CreatePageQueryHandler : IQueryHandler<CreatePage, string>
{
public string Retrieve(CreatePage query)
{ ... }
}
只有一个类可以实现这些具有老年特征的接口:
IQueryHandler<CreatePage, string>
Ninject有没有办法动态获取类的实例?就像是:
kernel.Get<IQueryHandler<CreatePage, string>>(); // returns instance of: CreatePageQueryHandler
请注意:
我不想在
bind
方法中手动RegisterServices
这个。我正在寻找一种动态的方法来获取该类的实例。 最佳答案
Ninject包含一个批次注册API。例如,您可以使用以下绑定:
kernel.Bind(
x => x.FromAssembliesMatching("Fully.Qualified.AssemblyName*")
.SelectAllClasses()
.InheritedFrom(typeof(IQueryHandler<,>))
.BindBase()
);
关于c# - 查找使用Ninject实现通用接口(interface)的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45323427/