我正在尝试在信号器应用程序中使用依赖注入,我目前正在使用此文档作为指南:https://docs.microsoft.com/en-us/aspnet/signalr/overview/advanced/dependency-injection
我遇到的问题是我有一个继承接口的类,并且在构造函数中需要一个参数。
public partial class ConnectionService : IConnectionService
{
private readonly IRepository<Connection> _connectionRepository;
public ConnectionService(IRepository<Connection> connection)
{
this._connectionRepository = connection;
}
}
在我使用代码示例的文档中说要使用这段代码:
public void Configuration(IAppBuilder app)
{
GlobalHost.DependencyResolver.Register(
typeof(ChatHub),
() => new ChatHub(new ChatMessageRepository()));
App.MapSignalR();
// ...
}
我在项目中使用它的问题是ConnectionService类需要一个参数IRepository
GlobalHost.DependencyResolver.Register(
typeof(ChatHub),
() => new ChatHub(new ConnectionService()));
我是新手使用接口所以我不确定我实际上要传递的是什么,每当我尝试传递像IConnectionService或IRepository这样的对象时,它说我不能将它们用作类型。
答案 0 :(得分:1)
这样的代码出了什么问题?只需使用现有的构造函数。
GlobalHost.DependencyResolver.Register(
typeof(ChatHub),
() => new ChatHub(new ConnectionService(someArgument));
编辑: 您的ConnectionService类可能需要实现IRepository。
答案 1 :(得分:0)
您无法传入接口实例,因为无法实例化接口。您需要传递给构造函数的参数是继承 IRepository接口的对象。