Здравствуйте, Воронков Василий, Вы писали:
ВВ>Сейчас ты мне пытаешься доказать, что если я использую возможность реализовать более одного интерфейса с разными генерик-параметрами, то значит у меня архитектура кривая?
Не я констатирую факт, что примеры такого использования обычно связаны с кривым дизайном и не демонстрируют насущную необходимость данной фичи.
В общем, я попробую реализовать эту фичу "для галочки", точнее для того чтобы лишить почвы данные споры, но если это окажется очень сложным, то я забью на это и моя совесть будет чиста.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, VladD2, Вы писали:
VD>Не я констатирую факт, что примеры такого использования обычно связаны с кривым дизайном и не демонстрируют насущную необходимость данной фичи.
Эта фича не необходима, но полезна, поскольку в некоторых случаях позволяет обойтись без создания класса- (и объекта-) обертки, реализующей нужный интерфейс.
Если рантайм позволяет, почему бы не реализовать ее?
Re[15]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, Воронков Василий, Вы писали:
VD>>Я в своем коде необходимость апкаста воспринимаю как баг. Уж в архитектуру точно не стал бы впихивать.
ВВ>Где ты видишь апкаст?
Не верно выразился. "Явное приведение типов" — так будет вернее.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, Воронков Василий, Вы писали:
ВВ>>>Где ты видишь апкаст? VD>>Не верно выразился. "Явное приведение типов" — так будет вернее.
ВВ>Линком пользуешься?
Иногда.
ВВ>Т.е. неявное приведение типов — это нормально.
А зачем мне оно в LINQ-е?
ВВ>А когда ты то же самое делаешь явно — это уже баг?
Я уже высказал свое мнение. Если тебя это нужно, повторю его. Считаю наличие явного приведение типов в коде — дефектом кода (точнее дизайна). Стараюсь его избегать. Иногда приходится его использовать, так как с ним получается проще. Но только в виде исключения и при этом я четко понимаю, что иду на компромисс.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, Воронков Василий, Вы писали:
ВВ>А я тебе задал вопрос. Что является "багом"? Явность приведения? Значит ли это, что неявное приведение типов это нормально?
Неявное вниз — это нормально. Явное плохо в любую сторону. В верх по любому очень плохо.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, VladD2, Вы писали:
ВВ>>А я тебе задал вопрос. Что является "багом"? Явность приведения? Значит ли это, что неявное приведение типов это нормально? VD>Неявное вниз — это нормально. Явное плохо в любую сторону. В верх по любому очень плохо.
Почему неявное вниз — нормально, а явное плохо? Объяснить сможешь?
Re[19]: Реализация двух одинаковых интерфейсов в одном типе
Может вместо того чтобы оттачивать философское мастерство (в баталиях на форумах), лучше примкнешь к проекту и поможешь чем-нить? Ну, или в группу разработки второй версии войдешь?
Было бы куда больше пользы. За одно других меньше от дел праведных отвлекал бы .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, Воронков Василий, Вы писали:
ВВ>>>А я тебе задал вопрос. Что является "багом"? Явность приведения? Значит ли это, что неявное приведение типов это нормально? VD>>Неявное вниз — это нормально. Явное плохо в любую сторону. В верх по любому очень плохо.
ВВ>Почему неявное вниз — нормально, а явное плохо? Объяснить сможешь?
Потому что компилятор вопросами замучает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Я повторю еще раз. Мне не известен тип объекта. Я не могу у него вызвать GetOtherEnumerator. Я не знаю — string это, массив или список. Я могу попробовать привести к IEnumerable<>.
Попробуй привести его к IMyEnumerable и уже у него попросить GetMyEnumerable.
Если нам не помогут, то мы тоже никого не пощадим.
Re[14]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, IT, Вы писали:
ВВ>>Я повторю еще раз. Мне не известен тип объекта. Я не могу у него вызвать GetOtherEnumerator. Я не знаю — string это, массив или список. Я могу попробовать привести к IEnumerable<>. IT>Попробуй привести его к IMyEnumerable и уже у него попросить GetMyEnumerable.
Ага, а когда меня спросят, почему я не использую стандартный, сказать, что в Немерле такое не поддерживается, а я типа "за компанию".
Re[15]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, IT, Вы писали:
ВВ>>>Я повторю еще раз. Мне не известен тип объекта. Я не могу у него вызвать GetOtherEnumerator. Я не знаю — string это, массив или список. Я могу попробовать привести к IEnumerable<>. IT>>Попробуй привести его к IMyEnumerable и уже у него попросить GetMyEnumerable.
ВВ>Ага, а когда меня спросят, почему я не использую стандартный, сказать, что в Немерле такое не поддерживается, а я типа "за компанию".
Реализация двух интерфейсов, которые различаются параметром типа — нестандартное решение и в C#. По крайнем мере, в BCL такое не встречается (как я могу судить исходя из моих Reflection- и Linq-скиллов).
Re[6]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, VladD2, Вы писали:
VD>Да, давай. Это будет интересно. А то что-то я себе даже представить такого не могу. Учитывая, что ошибку эту нашел только Ников, я склонен считать, что фича эта все же больше гипотетическая.
Я это использовал. Было нужно для перехода с существующего проекта на Nemerle. В этом форуме отписывался об этом, и в трекере эта бага была.
На тот момент эта бага оказалась критической, чтобы отказаться от Nemerle.
Сейчас я этот весь код заменил (действительно, не сильно нужная фича), но уже ни о каком Nemerle речи не идет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1238>>
Re[15]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, Воронков Василий, Вы писали:
ВВ>>>Я повторю еще раз. Мне не известен тип объекта. Я не могу у него вызвать GetOtherEnumerator. Я не знаю — string это, массив или список. Я могу попробовать привести к IEnumerable<>. IT>>Попробуй привести его к IMyEnumerable и уже у него попросить GetMyEnumerable.
ВВ>Ага, а когда меня спросят, почему я не использую стандартный, сказать, что в Немерле такое не поддерживается, а я типа "за компанию".
Нет. Скажешь, что два энумератора на одном объекте — это бред.
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Реализация двух одинаковых интерфейсов в одном типе
Здравствуйте, Ilya10k, Вы писали:
I>Я это использовал. Было нужно для перехода с существующего проекта на Nemerle.
Т.е. ты добавлял аналогичную багу или глосовал за имеющуюся?
Если не составит труда, можно ссылочку на описание бага?
I>В этом форуме отписывался об этом, и в трекере эта бага была.
Не припомню такого. Можно тоже ссылочку?
I>На тот момент эта бага оказалась критической, чтобы отказаться от Nemerle. I>Сейчас я этот весь код заменил (действительно, не сильно нужная фича), но уже ни о каком Nemerle речи не идет.
Ну, значит тебе не особо немрел нужен был, раз мелкая проблема тебя остановила.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.