2017-05-06 1 views
1

현재 SignalR을 사용하는 프로젝트에서 작업 중입니다. Startup()constructor은 매개 변수가 필요하지 않습니다. 이는 아래 코드를 사용해야하는 ChatHub 생성자를 호출하는 것을 의미합니다.인터페이스 매개 변수를 사용하여 클래스 생성자 호출

public void Configuration(IAppBuilder app) 
{ 
    GlobalHost.DependencyResolver.Register(
     typeof(ChatHub), 
     () => new ChatHub(
      new ConnectionService(null)); 


    app.MapSignalR(); 
} 

오전 데 문제는, 나는 당신이 interface의 인스턴스를 만들 수 없습니다 알고 ConnectionService에 대한 해당 매개 변수가 interface

public partial class ConnectionService : IConnectionService 
{ 
    private readonly IRepository<Connection> _connectionRepository; 

    public ConnectionService(IRepository<Connection> connection) 
    { 
     this._connectionRepository = connection; 
    } 
} 

이 인터페이스에 비교적 새로운되는 매개 변수를 필요로한다는 것이다 즉, 내가 그걸 constructor에 전달할 수는 없다는 것을 의미합니다. 그래서 내가하고 싶은 일이 심지어 수행 될지라도, 어떤 도움이나 해결책에 대한 링크는 인정됩니다.

+1

'null' 어떤 인터페이스에 대해 작동합니다 :) – Fabio

+0

나는 널 (null)을 전달하려고 않았다 하지만 내가 그것을 사용하려고하면 객체가 null이라는 에러가 발생합니다. –

답변

0

해당 인터페이스를 구현하는 구체적인 클래스를 전달하십시오. 테스트 목적이나 실제 구현을위한 모의가 될 수 있습니다.

+0

인터페이스는 IRepository 입니다.이 인터페이스를 구현하는 새 클래스를 만드는 방법은 무엇입니까? –

+0

음 ... mecahnically 인터페이스를 구현하는 계약 메서드, 속성, 이벤트 등을 구현하고있다.하지만 당신의 실제 질문은 아니지만 어떻게 실제로 그 메서드를 구현할 것이라고 느낀다면, 속성 등 IRepository . 이것은 어디에 stackoverflow 당신을 도울 수 없다, 당신은 깊은 지식을 구축하고 인터페이스를 구현할 수 있도록 도메인 지식을 구축해야합니다. 나는 누군가가 당신을 위해 코드를 붙여 넣을 것이라고 여기에서 의심 할 것이다. –

0

또한 널 구현 전달할 수 : 다음

public class MyNull : ISomeInterface 
{ 
    //You implement the ISomeInterface members with empty bodies 
} 

을하고 그것을 전달합니다

new MyNull() 
관련 문제