adhoc структура / класс в C #? - PullRequest
0 голосов
/ 18 июня 2010

В настоящее время я использую отражение с sql.Я нахожу, что если я хочу сделать специализированный запрос, проще всего получить результаты, создав новый класс, унаследованный от другого, и добавив 2 члена / столбца для моего специализированного запроса.Затем из-за отражений в lib в моем коде на c # я могу написать foreach (var v в списке) {v.AnyMember и v.MyExtraMember)

Теперь вместо того, чтобы разбрасывать класс по классу или изменять мою основную БД.CS файл я могу определить класс внутри функции?Я знаю, что могу создать анонимный объект, написав new {name = val, name2 = ...};но мне нужно передать этот класс в универсальной функции func (query, args);

Ответы [ 3 ]

2 голосов
/ 18 июня 2010

Посмотрите на DynamicObject , возможно, он может удовлетворить ваши потребности, если вы скроете словарь за вашей реализацией TryGetMember / TrySetMember. Вот небольшой пример, перейдите по ссылке.

1 голос
/ 18 июня 2010

Это возможно (хотя и не просто), но тогда полученный класс не будет известен во время компиляции, поэтому вы не сможете использовать v.MyExtraMember.В основном вы получите динамически созданный анонимный объект, поэтому вам придется использовать отражение для доступа к дополнительным членам.

1 голос
/ 18 июня 2010

Классы (типы в целом) не могут быть определены внутри методов.Doh.

...