Сообщение Re[7]: dynamic - пригождалось ли в вашей практике? от 30.08.2019 7:58
Изменено 30.08.2019 8:01 VladCore
Re[7]: dynamic - пригождалось ли в вашей практике?
Здравствуйте, Mystic Artifact, Вы писали:
MA>Здравствуйте, VladCore, Вы писали:
VC>>а если там, в row, внутри public property int Ver32Bit { get; }
MA> Тогда видимо динамик тем более не нужен же.
VC>>2.
VC>>ну и семантически идея поъожа на анонимные типы — не надо локальные только данные отжельно описывать в коде.
VC>>разница есть конечно и большая, те в compile time генерятся а те в runtime.
MA> Ничего не понял. Там в даппере вроде бы DapperRow? по сути является очень тупеньким хранилищем этой строки, и интерфейсом навроде IDictionary<string, object>. Таким образом никакая механика не позволит перейти от маппинга значений по именам полей к ординалам, но только теперь код делает дохрена всего неявно. Ну, это на мой личный вкус. Тут уже не раз указывали, что применяют динамик ради синтаксиса.
VC>>3. всякие рефаткоринги Get<T>("field") могут понять а могут и не понять
MA> А им строго не надо туда лезть. Основание менять имена полей — только изменение строки запроса. Во всех остальных случаях это вредительство. Если есть рефакторинги которые такое распознают... ну ок. У меня в студии таких правда нет.
Ты не понял. Сейчас да, DapperRow который реализует IReadOnlyDictionary, но с dynamic это всего лиш внутренняя реализация.
Stackoverflow команде никто не мешает поменять реализацию — заемитиьть
и замемитить итератор:
Как в Linq2Db я хз, но наверно что то похожее?
MA>Здравствуйте, VladCore, Вы писали:
VC>>а если там, в row, внутри public property int Ver32Bit { get; }
MA> Тогда видимо динамик тем более не нужен же.
VC>>2.
VC>>ну и семантически идея поъожа на анонимные типы — не надо локальные только данные отжельно описывать в коде.
VC>>разница есть конечно и большая, те в compile time генерятся а те в runtime.
MA> Ничего не понял. Там в даппере вроде бы DapperRow? по сути является очень тупеньким хранилищем этой строки, и интерфейсом навроде IDictionary<string, object>. Таким образом никакая механика не позволит перейти от маппинга значений по именам полей к ординалам, но только теперь код делает дохрена всего неявно. Ну, это на мой личный вкус. Тут уже не раз указывали, что применяют динамик ради синтаксиса.
VC>>3. всякие рефаткоринги Get<T>("field") могут понять а могут и не понять
MA> А им строго не надо туда лезть. Основание менять имена полей — только изменение строки запроса. Во всех остальных случаях это вредительство. Если есть рефакторинги которые такое распознают... ну ок. У меня в студии таких правда нет.
Ты не понял. Сейчас да, DapperRow который реализует IReadOnlyDictionary, но с dynamic это всего лиш внутренняя реализация.
Stackoverflow команде никто не мешает поменять реализацию — заемитиьть
class <>Row_42 {
public int Ver32Bit { get; }
public string Level { get; }
public string UpdateLevel {get; }
...
}
и замемитить итератор:
public IEnumerable<<>Row_42> {
while(reader.ReadNext())
{
yeild return new <>Row_42(........);
}
}
Как в Linq2Db я хз, но наверно что то похожее?
Re[7]: dynamic - пригождалось ли в вашей практике?
Здравствуйте, Mystic Artifact, Вы писали:
VC>>а если там, в row, внутри public property int Ver32Bit { get; }
MA> Тогда видимо динамик тем более не нужен же.
VC>>2.
VC>>ну и семантически идея поъожа на анонимные типы — не надо локальные только данные отжельно описывать в коде.
VC>>разница есть конечно и большая, те в compile time генерятся а те в runtime.
MA> Ничего не понял. Там в даппере вроде бы DapperRow? по сути является очень тупеньким хранилищем этой строки, и интерфейсом навроде IDictionary<string, object>. Таким образом никакая механика не позволит перейти от маппинга значений по именам полей к ординалам, но только теперь код делает дохрена всего неявно. Ну, это на мой личный вкус. Тут уже не раз указывали, что применяют динамик ради синтаксиса.
VC>>3. всякие рефаткоринги Get<T>("field") могут понять а могут и не понять
MA> А им строго не надо туда лезть. Основание менять имена полей — только изменение строки запроса. Во всех остальных случаях это вредительство. Если есть рефакторинги которые такое распознают... ну ок. У меня в студии таких правда нет.
Ты не понял. Сейчас да, DapperRow который реализует IReadOnlyDictionary, но с dynamic это всего лиш внутренняя реализация.
Stackoverflow команде никто не мешает поменять реализацию — заемитиьть
и замемитить итератор:
Как в Linq2Db я хз, но наверно что то похожее?
VC>>а если там, в row, внутри public property int Ver32Bit { get; }
MA> Тогда видимо динамик тем более не нужен же.
VC>>2.
VC>>ну и семантически идея поъожа на анонимные типы — не надо локальные только данные отжельно описывать в коде.
VC>>разница есть конечно и большая, те в compile time генерятся а те в runtime.
MA> Ничего не понял. Там в даппере вроде бы DapperRow? по сути является очень тупеньким хранилищем этой строки, и интерфейсом навроде IDictionary<string, object>. Таким образом никакая механика не позволит перейти от маппинга значений по именам полей к ординалам, но только теперь код делает дохрена всего неявно. Ну, это на мой личный вкус. Тут уже не раз указывали, что применяют динамик ради синтаксиса.
VC>>3. всякие рефаткоринги Get<T>("field") могут понять а могут и не понять
MA> А им строго не надо туда лезть. Основание менять имена полей — только изменение строки запроса. Во всех остальных случаях это вредительство. Если есть рефакторинги которые такое распознают... ну ок. У меня в студии таких правда нет.
Ты не понял. Сейчас да, DapperRow который реализует IReadOnlyDictionary, но с dynamic это всего лиш внутренняя реализация.
Stackoverflow команде никто не мешает поменять реализацию — заемитиьть
class <>Row_42 {
public int Ver32Bit { get; }
public string Level { get; }
public string UpdateLevel {get; }
...
}
и замемитить итератор:
public IEnumerable<<>Row_42> GetResultset{
while(reader.ReadNext())
{
yeild return new <>Row_42(........);
}
}
Как в Linq2Db я хз, но наверно что то похожее?