|
|
|
универсальные типы, наследование, преобразование
|
|||
|---|---|---|---|
|
#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=38483127&tid=1403607]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 316ms |
| total: | 465ms |

| 0 / 0 |
