Как определить методы расширения для универсального класса? - PullRequest
8 голосов
/ 20 сентября 2010

У меня общий интерфейс как:

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.Он не распознает тип 'T', который я передал IRepository.Я не могу передать этот тип в мой класс методов расширения, т.е. RepositoryExtension .Пожалуйста, ведите соответствующим образом.

Ответы [ 2 ]

17 голосов
/ 20 сентября 2010
public static void Add<T>(this IRepository< T > dataAccessRepository, T entity, string additionalValue)

Попробуйте это.Обратите внимание на <T> сразу после добавления

1 голос
/ 14 июля 2012
IRepository<Employee> employeeRepository = new Repository<Employee>(); 
employeeRepository.Add(entity);

Но в том случае, если вы предложили, я бы тоже передал тип методу расширения:

employeeRepository<Employee>(entity,"someValue")

http://just -dotnet.blogspot.in / 2012 /06 / C-генерики-introduction.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...