[英]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.