Я пытаюсь понять концепцию .NET Generics и фактически использовать их в своем собственном коде, но у меня все время возникает проблема..NET Общий метод Вопрос
Может кто-нибудь попытаться объяснить мне, почему следующая настройка не компилируется?
public class ClassA
{
ClassB b = new ClassB();
public void MethodA<T>(IRepo<T> repo) where T : ITypeEntity
{
b.MethodB(repo);
}
}
public class ClassB
{
IRepo<ITypeEntity> repo;
public void MethodB(IRepo<ITypeEntity> repo)
{
this.repo = repo;
}
}
Я получаю следующее сообщение об ошибке:
не может конвертировать из IRepo < 'T> в IRepo <' ITypeEntity>
Methoda вызывается с IRepo < «DetailType> параметр объекта, где DetailType наследуется от ITypeEntity ,
Я продолжаю думать, что это должно компилироваться, поскольку я ограничиваю T в MethodA типом ITypeEntity.
Любые мысли или отзывы были бы чрезвычайно полезными.
Спасибо.
Редактировать: У Nick R есть большое предложение, но, к сожалению, в моем контексте у меня нет возможности сделать ClassA Generic. ClassB может быть.
Если вы generic'ing до первого класса 2-ой также должны быть generic'ed – 2008-09-23 22:53:33
К сожалению у меня нет возможности сделать CLASSA универсальный класс, как это ASP .Net User Контроль, и я действительно не хочу пытаться выяснить эту проблему. Спасибо за вашу мысль. Это было вполне разумно на основе ограниченного контекста, который я дал. – 2008-09-23 23:04:36