与泛型的接口

use*_*597 -1 c# generics

我有这样的界面......

public interface IVisitsService
{
    IEnumerable<T> GetVisits<T,S>(S filters);
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序将使用此接口用于不同的对象.假设类"A"和类"B"将实现此接口,但是它们将为"T"和"S"泛型提供它们自己的对象,因此返回类型和参数类型将为每个对象VARY.我很难妥善解决这个问题.

例如...

public class VisitsBService : IVisitsService
{    
    public IEnumerable<T> GetVisits<T,S>(S filters)
    {
        return _visitRepo.GetVisits<VisitsHcs,VisitFilters>(filters);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后另一个类可以使用它自己的对象...

public class VisitsAService : IVisitsService
{    
    public IEnumerable<T> GetVisits<T,S>(S filters)
    {
        return _visitRepo.GetVisits<VisitsBcs,VisitBFilters>(filters);
    }
}
Run Code Online (Sandbox Code Playgroud)

Sel*_*enç 5

您需要使您的界面通用:

public interface IVisitsService<T, S>
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过提供类型参数来实现它:

public class VisitsBService : IVisitsService<VisitsHcs,VisitFilters>
Run Code Online (Sandbox Code Playgroud)