簡體   English   中英

將參數傳遞給繼承接口的類

[英]Pass parameter to class which inherits an interface

我正在嘗試在Signalr應用程序中使用依賴項注入,目前我正在使用本文檔作為指南: https ://docs.microsoft.com/zh-cn/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之類的對象時,它都會說我不能將它們用作類型。

這樣的代碼有什么問題??? 只需使用現有的構造函數即可。

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

編輯:您的ConnectionService類可能需要實現IRepository。

您無法傳入接口實例,因為無法實例化接口。 您需要傳遞給構造函數的參數是一個繼承 IRepository接口的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM