将参数传递给继承接口的类

时间:2017-05-02 17:48:28

标签: c# interface signalr

我正在尝试在信号器应用程序中使用依赖注入,我目前正在使用此文档作为指南: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这样的对象时,它说我不能将它们用作类型。

2 个答案:

答案 0 :(得分:1)

这样的代码出了什么问题?只需使用现有的构造函数。

GlobalHost.DependencyResolver.Register(
        typeof(ChatHub),
        () => new ChatHub(new ConnectionService(someArgument));

编辑: 您的ConnectionService类可能需要实现IRepository。

答案 1 :(得分:0)

您无法传入接口实例,因为无法实例化接口。您需要传递给构造函数的参数是继承 IRepository接口的对象。