c#通用接口,其中参数为通用

c#通用接口,其中参数为通用,c#,generics,C#,Generics,我有一个接口 public interface IOfflineBackedRepo<TSummary,TDetail> { Task SyncAsync(); } 如何解决语法问题?ISyncManager在其范围内没有提到TSummary,TDetail TSummary和TDetail是定义的,仅存在于IOfflineBackedRepo周围。当您尝试在其他任何地方使用它时,您必须定义一个将用于替换它们的类型。它可以是实际类型,也可以是从泛型参数获得的类型,但必须在I

我有一个接口

public interface IOfflineBackedRepo<TSummary,TDetail>
{
    Task SyncAsync();
}

如何解决语法问题?

ISyncManager
在其范围内没有提到
TSummary,TDetail

TSummary
TDetail
是定义的,仅存在于
IOfflineBackedRepo
周围。当您尝试在其他任何地方使用它时,您必须定义一个将用于替换它们的类型。它可以是实际类型,也可以是从泛型参数获得的类型,但必须在
ISyncManager

在最基本的方面,

public interface ISyncManager<T,U,V> where T : IOfflineBackedRepo<U,V>
{
    void Register(T repo);

    Task SyncNowAsync(); // this loops through and calls SyncAsync on the repo
}

语法错误是什么?找不到类型或命名空间TSummary。这是否意味着您需要在某个地方定义
TSummary
?公共接口是SyncManager,请欣赏
public interface ISyncManager<T,U,V> where T : IOfflineBackedRepo<U,V>
{
    void Register(T repo);

    Task SyncNowAsync(); // this loops through and calls SyncAsync on the repo
}
public interface IOfflineBackedRepo
{
    Task SyncAsync(); // this function is not typed specific right?
}

public interface IOfflineBackedRepo<TSummary,TDetail> : IOfflineBackedRepo
{
    // other definition about type specific
}

public interface ISyncManager<T> where T : IOfflineBackedRepo
{
    void Register(T repo);

    Task SyncNowAsync(); // this loops through and calls SyncAsync on the repo
}
public static class SyncManagerExt
{
    // Register is just Add to collection
    public static Task SyncNowAsync(this ICollection<T> items) where T : IOfflineBackedRepo
    {
        // loops through items and calls SyncAsync on the repo
    }
}