powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сконструировать через Emit класс, реализущий заданный интерфейс
25 сообщений из 62, страница 2 из 3
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39899730
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Классы зачем генерить? ))

Ну это уже не ко мне - мне их генерить незачем :)
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900146
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гадство, манипуляции с IL не нравятся антивирусам, нужно по-другому делать.

Задача, значит, так стоит (упрощенно): есть расширение для IEnumerable<IData> (IData пустой, но может быть унаследован непустым интерфейсом), которое работает с ним через Reflection. Нужно подсунуть расширению IEnumerable с чем-то, реализующим IData, у чего набор свойств задается динамически так, чтобы Reflection их схавал.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900154
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
IData пустой

CA1040: Avoid empty interfaces
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900155
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Antonariy
IData пустой

CA1040: Avoid empty interfaces
Совет не по адресу, это легаси.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900156
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
манипуляции с IL не нравятся антивирусам

Это что еще за шляпа такая?
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900157
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

А чем вообще самый тупейший рефлекшен не угодил? Там террабайты данных в реалтайм надо молотить что ли?
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900163
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Antonariy
манипуляции с IL не нравятся антивирусам

Это что еще за шляпа такая?
Что за шляпа IL или что за шляпа антивирусы?)
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900168
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Antonariy,

А чем вообще самый тупейший рефлекшен не угодил? Там террабайты данных в реалтайм надо молотить что ли?
В каком смысле не угодил? Он и используется - берется модель и шерстятся свойства. Проблема возникает, когда модель неизвестна на этапе компиляции, когда ее свойства хранятся в базе, да еще по записям разных таблиц разбросаны.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900220
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
fkthat
пропущено...

Это что еще за шляпа такая?
Что за шляпа IL или что за шляпа антивирусы?)

Программа: Authenticode(R) - signing and verifying tool
Пользователь: user1 (Активный пользователь)
Компонент: Защита от файловых угроз
Результат: Обнаружено: HEUR:Trojan.MSIL.Crypt.gen
Объект: C:\Users\user1\.nuget\packages\exceldna.addin\1.0.0.9\tools\ExcelDna.xll
Причина: Машинное обучение

Внутри этой xll тоже есть Emit, коллеге пришлось что-то поменять в исходниках (ExcelDna есть на гитхабе) и создать пакет с собственной сборкой, на которую каспер не ругается.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900257
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
fkthat
пропущено...

CA1040: Avoid empty interfaces
Совет не по адресу, это легаси.
Да и вообще дурь там какая-то написана. "Замените атрибутом". А ограничения на дженерики, а экстеншены как они думают на атрибуты вешать?
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900272
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
В каком смысле не угодил? Он и используется - берется модель и шерстятся свойства. Проблема возникает, когда модель неизвестна на этапе компиляции, когда ее свойства хранятся в базе, да еще по записям разных таблиц разбросаны.

Ничего не понял. Рефлекшен как раз и дает возможность "шерстить модели", которые неизвестны на этапе компиляции. "Позднее связывание".
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900281
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
Да и вообще дурь там какая-то написана. "Замените атрибутом". А ограничения на дженерики, а экстеншены как они думают на атрибуты вешать?

Зачем тебе может понадобиться ограничение на то, что пусто? Это тоже самое, что ограничение на System.Object. Ограничения на дженерики нужны для того, чтобы потребовать от параметра дженерика исполнения какого-то контракта (например, иметь какие-либо методы/свойства, иметь конструктор по умолчанию, быть структурой и т.п.) Какой смысл требовать от параметра выполнения пустого контракта, который ни к чему его не контрактит? С екстеншенами тоже самое.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900302
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,


Antonariy
Да и вообще дурь там какая-то написана. "Замените атрибутом". А ограничения на дженерики, а экстеншены как они думают на атрибуты вешать?


для этого существуют юнит-тесты )
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900308
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
Гадство, манипуляции с IL не нравятся антивирусам, нужно по-другому делать.

Задача, значит, так стоит (упрощенно): есть расширение для IEnumerable<IData> (IData пустой, но может быть унаследован непустым интерфейсом), которое работает с ним через Reflection. Нужно подсунуть расширению IEnumerable с чем-то, реализующим IData, у чего набор свойств задается динамически так, чтобы Reflection их схавал.


В общем, тут иногда шумиха создаётся, когда говоришь людям -- делайте по уму сразу :)

Ну так вот он -- яркий пример, когда кривые решения переросли в легаси, и людям приходится страдать и идти на неипические меры, чтобы простейшие вещи втулить :)
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900323
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Antonariy
Да и вообще дурь там какая-то написана. "Замените атрибутом". А ограничения на дженерики, а экстеншены как они думают на атрибуты вешать?

Зачем тебе может понадобиться ограничение на то, что пусто?
То, что пусто, само является ограничением.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900327
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Antonariy
В каком смысле не угодил? Он и используется - берется модель и шерстятся свойства. Проблема возникает, когда модель неизвестна на этапе компиляции, когда ее свойства хранятся в базе, да еще по записям разных таблиц разбросаны.

Ничего не понял. Рефлекшен как раз и дает возможность "шерстить модели", которые неизвестны на этапе компиляции. "Позднее связывание".
Поправочка: которые вообще не существуют на этапе компиляции.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900330
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Antonariy
Гадство, манипуляции с IL не нравятся антивирусам, нужно по-другому делать.

Задача, значит, так стоит (упрощенно): есть расширение для IEnumerable<IData> (IData пустой, но может быть унаследован непустым интерфейсом), которое работает с ним через Reflection. Нужно подсунуть расширению IEnumerable с чем-то, реализующим IData, у чего набор свойств задается динамически так, чтобы Reflection их схавал.


В общем, тут иногда шумиха создаётся, когда говоришь людям -- делайте по уму сразу :)

Ну так вот он -- яркий пример, когда кривые решения переросли в легаси, и людям приходится страдать и идти на неипические меры, чтобы простейшие вещи втулить :)
У меня карма такая - переписывать чужой говнокод.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900337
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

По уму в данном случае нужно было использовать DataTable?
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900351
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
То, что пусто, само является ограничением.

И что оно ограничивает?
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900362
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
hVostt,

По уму в данном случае нужно было использовать DataTable?

конечно
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900496
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Antonariy
То, что пусто, само является ограничением.

И что оно ограничивает?
ну сравни this object и this IData. а еще Test<T> и Test<T> where T : IData.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900498
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
Antonariy
hVostt,

По уму в данном случае нужно было использовать DataTable?

конечно
хотелось бы услышать начальника транспортного отдела.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900537
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
hVostt,

По уму в данном случае нужно было использовать DataTable?


Не обязательно DataTable, я ж всей задачи не знаю и подробностей. Но да, во многих случаях подойдёт DataTable для динамических моделей данных.

Такие вещи как IData, IEntity и т.п. вызывают очень скоро неминуемую протечку абстракции во все щели. Которые потом приходится затыкать рефлекией, эмитом и прочей хернёй.
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900547
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
ну сравни this object и this IData. а еще Test<T> и Test<T> where T : IData.

Давай сравним. И в чем отличие, если IData пустой?
...
Рейтинг: 0 / 0
Сконструировать через Emit класс, реализущий заданный интерфейс
    #39900569
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Antonariy
ну сравни this object и this IData. а еще Test<T> и Test<T> where T : IData.

Давай сравним. И в чем отличие, если IData пустой?
то есть это не очевидно? Удивительно.

Если сделать расширение для object, то оно прилипнет ко ВСЕМ типам, где надо и где не надо, засирая интеллисенс. В дженерик без ограничений тоже оказывается возможным передать любой тип. А в реальной жизни и расширения и дженерики как правило все же рассчитаны на работу с ограниченным семейством типов. Это подсказки для разработчиков на уровне компилятора, что можно и что нельзя использовать в соответствующих методах.
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сконструировать через Emit класс, реализущий заданный интерфейс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]