gpt4 book ai didi

c# - 如何将 IDictionary 属性与 Ninject 绑定(bind)?

转载 作者:太空狗 更新时间:2023-10-30 00:44:44 26 4
gpt4 key购买 nike

我有一个类:

public class MyClass
{
[Inject]
public IDictionary<string, IMyInterface> MyDictionary { get; set; }
}

我有几个 IMyInterface 接口(interface)的实现,它们注入(inject)了自己的依赖项。每个实现都应该有一个不同的 key 。

我如何使用 Ninject 绑定(bind)这样的属性?

最佳答案

我假设这是一个固定列表。最简单的方法是使用提供商:

    public class MyProvider :  IProvider
{
public object Create(IContext context)
{
return new Dictionary<string, IMyInterface>{
{"alpha", context.Kernel.Get<ImpClassOne>()},
{"beta", context.Kernel.Get<ImplClassTwo>()}
}
}

public Type Type
{
get { return typeof(IDictionary<string, IMyInterface>); }
}
}

您可以像这样将提供程序注册到您的内核:

   kernel.Bind<IDictionary<string, IMyInterface>>().ToProvider<MyProvider>();

然后属性的 [Inject] 将使用提供程序创建字典。

关于c# - 如何将 IDictionary 属性与 Ninject 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7203833/

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