|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
привет! генерю класс "EntityDataModel" "на лету", из сгенерированного текста. получаю экземпляр, самого класса в сборке нет: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
требуется получить таблицу System.Data.Linq.Table<T>, т.е.: Код: c# 1.
но данного типа: myNamespace.EntityDataModel в режиме разработки просто нет... можно ли как-то сгенерить таблицу объектов с нужным типом, что-то типа этого: Код: c# 1.
пока выкрутился через System.Data.Linq.ITable Код: c# 1.
но так не могу использовать linq запросы к набору... СПАСИБО. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 12:06 |
|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
var linqTable = System.Data.Linq.Table<myNamespace.EntityDataModel>(); в чем проблема сгенерировать точно так же Table<EntityDataModel> ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 12:27 |
|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
Roman Mejtesvar linqTable = System.Data.Linq.Table<myNamespace.EntityDataModel>(); в чем проблема сгенерировать точно так же Table<EntityDataModel> ? проблема в том, что в режиме разработке этот тип выглядит буквально так (возвращается в виде строки): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
т.е. он существует только в режиме работы приложения.... мне надо тип вывести из экземпляра... или достать тип из объектов: Код: c# 1. 2.
но как? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 12:49 |
|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
WitC Код: c# 1.
но так не могу использовать linq запросы к набору... СПАСИБО. к типу не привёл... в общем все мы от object. Код: c# 1.
вопрос оставляю открытый. спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 14:12 |
|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
если вы динамически в рантайме создаете класс, то создавайте всё остальное так же динамически к нему, так как в не рантайма, его не существует. Но могут существовать интерфейсы взаимодействия с этим классом, которые будут существовать всегда. А генератор должен определить это наследование. Тогда тип который был создан в рантайме совершенно не имеет значения. Всё взаимодействие будет через интерфейсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 16:11 |
|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
WitCно так не могу использовать linq запросы к набору... Вы вообще в курсе, что такое статическая типизация? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 16:13 |
|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
WitC, Если вы работаете с типами, известными только во время исполнения, да и вообще с рантайм-структурами, то и выбирать надо подходящие технологии, например DataTable, но уж совершенно точно, не LINQ, который изначально заточен исключительно под статическую типизацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 16:15 |
|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
Я не знаю, зачем вы страдает такой хренью. Но думаю причина этому "лень матушка" :) когда охота быстро и без гемороя нагенерить классы и не писать их ручками. Если это так, то смотрите в сторону TT файлов (Text Template) в них можно нагенерить все эти классы и они будут статическими и собираться вместе со сборкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 16:49 |
|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
Roman Mejtes, всё верно, интерфейсы - самый идеальный вариант, он отпал первым. :) Для начала уточню задачу, не сделал этого в самом начале. Требуется постранично выводить данные в ДатаГридВиев и подрубаться к любой таблице, в любой указанной БД, в настроечном файле приложения. самый простой вариант ДатаТайбл/ДатаСэт + ДБФактори. в этом случае, для страничной загрузки, необходимо заворачивать таблицу в запросы с подсчётом строк, генерить критерии для Бетвина, и это не смотря на то, что запросы в разные БД будут, мягко сказать, различаться... от сюда, выбрал следующую схему: Линкью - управляем данными и диапазонами. АДО - тянем структуру таблицы, например как ДатаРиадер.ГетТайблСхема (примерно...) из этой структуры создаём динамический класс, с названиями и типами полей, указанными в схеме... генерим класс, отдаём Линкью - УРА. В итоге, этот вариант уже работает. теперь, почему не возможно использовать Интерфейс - поля (!) генерятся автоматически, т.е. шаблон структуры изначально не известен... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 19:35 |
|
Generic<T> where T = instance.GetType() КАК?
|
|||
---|---|---|---|
#18+
hVosttWitC, Если вы работаете с типами, известными только во время исполнения, да и вообще с рантайм-структурами, то и выбирать надо подходящие технологии, например DataTable , но уж совершенно точно, не LINQ, который изначально заточен исключительно под статическую типизацию. согласен, описал выше причину. заморочился немного, но работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 19:37 |
|
|
start [/forum/topic.php?fid=20&msg=39531067&tid=1399682]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 321ms |
total: | 466ms |
0 / 0 |