я застрял с проблемой # синтаксиса CУменьшить генериков в объявлении класса
Я хотел бы абстрагироваться мой код немного и я иду на что-то вроде этого:
public abstract class DMO<TDao ,TExtender>
where TDao : Dao
where TExtender : Extender<TDao>
{
abstract Dictionary<TExtender, PropertyInfo> Properties { get; set; }
....
}
только потому, что если я сделать
public abstract class DMO<TDao>
where TDao : Dao
{
abstract Dictionary<Extender<TDao>, PropertyInfo> Properties { get; set; }
....
}
Я не в состоянии использовать полученные из Extender<TDao>
есть пу способ сделать это проще (я застрял с .net 3.5, поэтому я думаю, что я не могу использовать коварианты для этого)
Спасибо
Я не совсем уверен, чего вы пытаетесь достичь здесь. Может быть, немного уточнить, какую проблему вы пытаетесь решить? – rossipedia
Вопрос заключается в уменьшении сложности классов, путем редукции общих параметров, у меня есть проблема с пониманием того, почему мне нужен TExender здесь, учитывая, что TExtender - это только Extender, но после некоторого поиска это может быть просто ограничение структуры и может быть разрешено используя ковариантные дженерики (но только с .net 4.0) –
guillaume
Вы уверены, что вы не можете использовать производный класс Extender в словаре? Я думаю, что ваш второй случай достаточно хорош и должен хорошо работать –
Fendy