如何在 c# 接口中使用泛型类型参数



我有

public interface IPersistedModel<TModel, TIdentifier>

我想定义一个接口,其中我有一个使用上述泛型类型参数的泛型方法。 有没有办法做到这一点? 我已经尝试了以下内容,但都没有编译。

public interface IModelCollection1<IPersistedModel<TModel, TIdentifier>>
{
    IEnumerable<TModel> ReadCollection(TIdentifier identifier);
}

public interface IModelCollection2<T> where T : IPersistedModel<TModel, TIdentifier>
{
    IEnumerable<TModel> ReadCollection(TIdentifier identifier);
}

不幸的是,您需要在接口本身中包含泛型类型:

public interface IModelCollection<T, TModel, TIdentifier> 
       where T : IPersistedModel<TModel, TIdentifier>
{
    IEnumerable<TModel> ReadCollection(TIdentifier identifier);
}

您可以简单地使用泛型方法,该方法仅向该方法添加泛型参数

class A
{
static void Swap<T>(ref T lhs, ref T rhs)
{
    T temp;
    temp = lhs;
    lhs = rhs;
    rhs = temp;
}
}

试试这个:

public interface Ione <T, U> where T : IInterfaceOne<T> where U : IInterfaceTwo<U>
{
}
public interface IInterfaceOne<T>
{
}
public interface IInterfaceTwo<U>
{
}

最新更新