我已经创建了这些接口和类:
interface IInterpreter.
interface IViz.
interface IVizDescriptor.
其中,
class IntOne : IInterpreter.
和
class VizDescOne : IVizDescriptor {
VizDescOne(string title, Type type, SchemaType schemaType, string desc)
{ }
}
和
class VizOne : IViz {
public VizOne (IntOne, IVizDescriptor)
{
}
}
我已经发现我能够在IInterpreter
和IntOne
之间创建绑定,以便在我申请VizOne
时, IntOne
被注入第一个参数构造函数。
问题是没有办法为VizDescOne
创建合适的绑定。
VizDescOne
的构造函数参数过于依赖于每种情况,我无法为其创建绑定。
是否有某种方法可以提供manually
并解析VizOne (IntOne, IVizDescriptor)
构造函数?
然而,IVizDescriptor
过于依赖任何具体情况
答案 0 :(得分:1)
你有很多选择:
您可以使用构造函数将IVizDescriptor绑定到VizDescOne 参数:
kernel.Bind<IVizDescriptor>().To<VizDescOne>()
.WithConstructorArgument("title", "someTitle").WithConstructorArgument("type", typeof(int))...
您可以将IVizDescriptor绑定到常量:
IVizDescriptor vizDescOne = new VizDescOne(...);
kernel.Bind<IVizDescriptor>().ToConstant(vizDescOne);
您可以将IVizDescriptor绑定到方法:
kernel.Bind<IVizDescriptor>().ToMethod(o=> new VizDescOne(...));
您可以详细了解这些选项以及更多here和here。
作为旁注,我建议你阅读@Steven评论和他链接的文章,因为如果构造函数参数是运行时值,你应该重新考虑你的设计。