如何定义泛型类的扩展方法?

时间:2010-09-20 07:25:29

标签: c# methods generics

我的通用界面如下:

public IRepository< T >
{

    void Add(T entity);

}

和一个班级:

public class Repository< T >:IRepository< T >
{

    void Add(T entity)
    {      //Some Implementation
    }

}

现在我想制作上述接口的扩展方法。我做了以下课程:

public static class RepositoryExtension

{

    public static void Add(this IRepository< T > dataAccessRepository, T entity, string additionalValue)

    {
        //Some Implementation
    }

}

但是我在扩展Add方法中遇到错误。它无法识别我传递给IRepository的Type'T'。我不能将此类型传递给我的Extenstion Methods类,即RepositoryExtension&lt; T>。请以适当的方式指导。

2 个答案:

答案 0 :(得分:17)

public static void Add<T>(this IRepository< T > dataAccessRepository, T entity, string additionalValue)

试试吧。 在添加

之后立即注意<T>

答案 1 :(得分:1)

IRepository<Employee> employeeRepository = new Repository<Employee>(); 
employeeRepository.Add(entity);

但是在你建议的情况下我也会将类型传递给扩展方法:

employeeRepository<Employee>(entity,"someValue")

http://just-dotnet.blogspot.in/2012/06/c-generics-introduction.html