Информация об изменениях

Сообщение 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 команде никто не мешает поменять реализацию — заемитиьть

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 команде никто не мешает поменять реализацию — заемитиьть

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 я хз, но наверно что то похожее?