获取要注入的对象的参数名称
本文关键字:参数 对象 注入 获取 | 更新日期: 2023-09-27 18:16:39
我有一个名为IListener
的接口。现在我想创建一个类来接收该接口的两个实例。
public Controller(IListener listener1, IListener listener2)
{ ... }
实现IListener
需要一个端口。我如何确定IListener
绑定中的参数名称,以便我可以选择合适的端口?我认为回调可以是这样的:
public Kernel()
{
Bind<IListener>()
.To<SyncUdpListener>()
.WithConstructorArgument("port", GetListenerPort);
}
private object GetListenerPort(IContext context, ITarget target)
{
var command = this.Get<Command>();
switch (...)
{
case "videoListener":
return command.VideoPort;
case "audioListener":
return command.AudioPort;
}
throw new Exception();
}
需要在switch语句中填写参数名的地方
提前感谢!
我不是百分之百确定你想在这里实现什么。但是如果你的控制器看起来像:
public Controller(IListener videoListener, IListener audioListener)
{ ... }
和下面的代码:
private object GetListenerPort(IContext context, ITarget target)
{
var command = this.Get<Command>();
switch (context.Request.Target.Name)
{
case "videoListener":
return command.VideoPort;
case "audioListener":
return command.AudioPort;
}
throw new Exception();
}
您将获得一个具有两个IListener
实例的控制器,具有VideoPort和AudioPort参数。也许你需要确保Request.Target.Type
是正确的控制器类型