我有这样的界面......
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)
您需要使您的界面通用:
public interface IVisitsService<T, S>
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过提供类型参数来实现它:
public class VisitsBService : IVisitsService<VisitsHcs,VisitFilters>
Run Code Online (Sandbox Code Playgroud)