|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Конструкция не компилируется: 'Foo.Creator' cannot implement 'IHasCreator.Creator' because it does not have the matching return type of 'IUser' Почему так? Что я недопонял? Можно ли тут что-то сделать, с учетом того, что код класса Foo я менять не могу? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 00:21 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Shocker.ProМожно ли тут что-то сделать, с учетом того, что код класса Foo я менять не могу? кастрировать автора класса Foo ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 00:42 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Изопропилкастрировать автора класса Fooсложно, это кодогенератор ))) Попробую вот так выйти из положения: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
по крайней мере компиляция проходит (забыл сказать, Foo объявлен как partial, и интерфейс ему приписываю я сам) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 00:46 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Shocker.ProИзопропилкастрировать автора класса Fooсложно, это кодогенератор ))) Попробую вот так выйти из положения: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
по крайней мере компиляция проходит (забыл сказать, Foo объявлен как partial, и интерфейс ему приписываю я сам)дык пропишите тогда и явную реализацию интерфейса ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 06:28 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
не, я могу только вот так сделать: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 09:01 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Shocker.ProПочему так? Что я недопонял?и он еще спрашивает. в интерфейсе свойство возвращает тип IUser, а в реализации ты кодогенератор подсовывает User. ничо, что это разные типы, на минуточку? а интерфейс определяет тип ЖОСКА! что за говно у тебя занимается генерацией кода, что ты не можешь на него влиять? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:11 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Antonariyи он еще спрашивает. в интерфейсе свойство возвращает тип IUser, а в реализации ты кодогенератор подсовывает User. ничо, что это разные типы, на минуточку? а интерфейс определяет тип ЖОСКА!Поскольку User реализует IUser, не понимаю, почему бы это не разрешить. Antonariyчто за говно у тебя занимается генерацией кода, что ты не можешь на него влиять?EF в режиме DBFirst ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:17 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Shocker.ProAntonariyи он еще спрашивает. в интерфейсе свойство возвращает тип IUser, а в реализации ты кодогенератор подсовывает User. ничо, что это разные типы, на минуточку? а интерфейс определяет тип ЖОСКА!Поскольку User реализует IUser, не понимаю, почему бы это не разрешить.Не понимаешь, потому что ты тупо ниасилил интерфейсы. Еще раз: User и IUser это РАЗНЫЕ типы. Не один и тот же тип, как требует смысл интерфейсов, а два отдельных типа. С разными названиями. И пофиг, какие там у них взаимные отношения, интерфейс IHasCreator это не колышет, ему нужен User, и точка. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:36 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Antonariy, User может быть неявно приведен к IUser Посему не понимаю, какое техническое или логическое ограничение может быть на такое использование. Обычно на подобные ограничения существуют причины. Я могу принять это как данность, но если буду знать причину, будет легче жить ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:44 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Shocker.ProEF в режиме DBFirstтак он все правильно делает. непонятно тогда, откуда это взялось? он этим не занимается. Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:45 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Antonariyинтерфейс IHasCreator это не колышет, ему нужен User, и точка. ты хотел сказать IUser наварное. вообще зачем тогда городить интерфейсы? получается в данном случае, что IUser вообще нафиг не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:48 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Shocker.ProAntonariy, User может быть неявно приведен к IUser Посему не понимаю, какое техническое или логическое ограничение может быть на такое использование. Обычно на подобные ограничения существуют причины. Я могу принять это как данность, но если буду знать причину, будет легче жить потому, что в интерфейсе определено поле с интерфейсом IUser, а это значит, что там может возвращаться любой класс наследующий интерфейс IUser, а не только User. проще говоря интерфейс предполагает в поле Creator любой класс наследующий IUser, а класс наследник этого интерфейса, что только 1 класс может быть возвращен. То есть, если я создам класс на базе интерфейса IUser отличный от класс User, как будет происходить преобразование типа? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:52 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
AntonariyShocker.ProEF в режиме DBFirstтак он все правильно делает. непонятно тогда, откуда это взялось? он этим не занимается. Код: c# 1.
Это я ему придаю (см. выше), чтобы некий библиотечный код, не имеющий зависимости от проекта, где находится EF, мог делать некоторые типовые действия с его объектами через интерфейсы, объявленные в библиотеке. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:52 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Shocker.ProAntonariy, User может быть неявно приведен к IUser Посему не понимаю, какое техническое или логическое ограничение может быть на такое использование. Обычно на подобные ограничения существуют причины. Я могу принять это как данность, но если буду знать причину, будет легче жить Ты тупой? причина в том, что это данность. Интерфейсы работают так и никак иначе. В реализации ДОЛЖЕН использоваться указанный в интерфейсе тип, а никакой не производный или первообразный. Именно этот смысл вложен в понятие "интерфейс". А компилятор, исполняя этот смысл, просто сравнивает названия типов и не лезет в дебри их взаимосвязей. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:54 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Roman MejtesAntonariyинтерфейс IHasCreator это не колышет, ему нужен User, и точка. ты хотел сказать IUser наварное.да ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 10:56 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Antonariy, ну, взять для примера тот факт, что компилятор вообще не парится и скомпилирует такой код. я получаю объект и привожу его к типу IHasCreator. У объекта есть поле Creator типа IUser, я создаю класс Ololo : IUser {} на базе IUser и присваиваю его экземпляр этому полю. Думаю после такой манипуляции (если бы такое вообще было возможно) я бы получил исключение :) из института сразу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 11:00 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Shocker.ProAntonariyпропущено... так он все правильно делает. непонятно тогда, откуда это взялось? он этим не занимается. Код: c# 1.
Это я ему придаю (см. выше)А еще ты не осилил слово partial. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
и будет щастье ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 11:14 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
а хотя я кажется тупанул, ты же хочешь не просто вернуть User, а задекларировать его. слово partial тут не спасет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 11:18 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
просто без него все равно не взлетело бы, но из-за другой ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 11:21 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
AntonariyА еще ты не осилил слово partial.попробуй осилить, все, что я пишу, а не через одно 17664775 Я уже написал способ, которым я могу решить свою задачу 17664287 , далее хотел только разобраться в причинах, Roman Mejtes объяснил (благодарю покорнейше), а ты продолжаешь что-то свое обсасывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 11:22 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
да, увлекся ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 11:25 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Roman Mejtes, С пропертями понятно. А вот почему аналогичный код с методами не компилируется? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Тут-то точно типы совместимы на выходе. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:00 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
ДиезRoman Mejtes, С пропертями понятно. А вот почему аналогичный код с методами не компилируется? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Тут-то точно типы совместимы на выходе.еще один... тип должен бы не "совместимым", а ТЕМ ЖЕ САМЫМ и не важно, свойство это, метод или параметр метода. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:07 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Диез, Код: c# 1. 2. 3. 4. 5. 6. 7.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:07 |
|
|
start [/forum/topic.php?fid=20&fpage=8&tid=1398457]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 279ms |
total: | 423ms |
0 / 0 |