|
универсальные типы, наследование, преобразование
|
|||
---|---|---|---|
#18+
Всем привет! Помогите разобраться, а то запутался... Имеем базовые классы: Код: c# 1. 2. 3.
базовый справочник: Код: c# 1.
парочку производных справочников: Код: c# 1. 2.
и вот такой вот класс: Код: c# 1.
а теперь проблема: Код: c# 1. 2.
Ошибка: Не удается использовать тип "Directory2" в качестве параметра типа "T" для базового типа или метода "DirectoryEditor<T>". Отсутствует неявное преобразование ссылки из "Directory2" в "DirectoryBase<DirectoryItem>". Догадываюсь, что поможет мне универсальный модификатор out, только где и как его реализовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2013, 11:57 |
|
универсальные типы, наследование, преобразование
|
|||
---|---|---|---|
#18+
Может убрать ограничение where T : DirectoryBase<DirectoryItem> с: Код: c# 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2013, 12:09 |
|
универсальные типы, наследование, преобразование
|
|||
---|---|---|---|
#18+
Alex ShulgВсем привет! Помогите разобраться, а то запутался... Имеем базовые классы: Код: c# 1. 2. 3.
базовый справочник: Код: c# 1.
парочку производных справочников: Код: c# 1. 2.
и вот такой вот класс: Код: c# 1.
а теперь проблема: Код: c# 1. 2.
Ошибка: Не удается использовать тип "Directory2" в качестве параметра типа "T" для базового типа или метода "DirectoryEditor<T>". Отсутствует неявное преобразование ссылки из "Directory2" в "DirectoryBase<DirectoryItem>". Догадываюсь, что поможет мне универсальный модификатор out, только где и как его реализовать? 1. вариантность только для интерфейсов и делегатов можно использовать 2. Ошибка понятна, вы же сами определили ограничение:) Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2013, 12:19 |
|
универсальные типы, наследование, преобразование
|
|||
---|---|---|---|
#18+
netivanвариантность только для интерфейсов и делегатов можно использовать И еще для IEnumerable<T>. В данном случае всё нормально скомпилируется, если объявить ограничения для DirectoryEditor<T> так: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2013, 12:34 |
|
универсальные типы, наследование, преобразование
|
|||
---|---|---|---|
#18+
netivanвариантность только для интерфейсов и делегатов можно использоватьЭто я знаю, вот и думал как лучше извратиться с интерфейсами Сон Веры ПавловныИ еще для IEnumerable<T>. В данном случае всё нормально скомпилируется, если объявить ограничения для DirectoryEditor<T> так: Код: c# 1.
Реально, ТЕМА!!! Работает! СПС! Вот так я и хотел! Правда думал через свой интерфейс, а Вы подсказали как через стандартный :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2013, 13:48 |
|
универсальные типы, наследование, преобразование
|
|||
---|---|---|---|
#18+
Сон Веры Павловныnetivanвариантность только для интерфейсов и делегатов можно использовать И еще для IEnumerable<T>. В данном случае всё нормально скомпилируется, если объявить ограничения для DirectoryEditor<T> так: Код: c# 1.
а что IEnumerable<T> не интерфейс? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2013, 13:50 |
|
|
start [/forum/topic.php?fid=20&msg=38483063&tid=1403607]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 143ms |
0 / 0 |