Это происходит в Visual Studio 2010.
Я работаю с универсальными методами, и в основном теряю свой смысл и мешаю мне продолжать работу над этим проектом.
У меня в основном следующий класс:
public class SearchRepository : DataRepository<IAudit>
{
public override IEnumerable<IAudit> RetrieveAll<IAuditSearch>(IAuditSearch searchParameters)
{
// CODE GOES HERE
}
public override bool Delete<TIAudit>(IAudit audit)
{
// CODE GOES HERE
}
}
Это наследуется от:
public abstract class DataRepository<T>
{
public virtual IEnumerable<T> RetrieveAll<U>(U parameter1)
{
throw new NotImplementedException();
}
public virtual bool Delete<U>(U parameter1)
{
throw new NotImplementedException();
}
}
Так что Delete работает именно так, как я и ожидал. У меня есть intellisense, и он правильно компилируется. RetrieveAll не работает правильно, используя IAuditSearch. Если я изменю его на TIAuditSearch, то там будет написано: «Нет подходящего метода для переопределения».
Не уверен, что я делаю неправильно, но он определенно не доволен мной.
ОБНОВЛЕНО: изменен виртуальный метод на переопределение для метода Delete в верхней части. Это была ошибка.