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

Сообщение Re[3]: dynamic - пригождалось ли в вашей практике? от 29.08.2019 21:49

Изменено 29.08.2019 22:07 VladCore

Re[3]: dynamic - пригождалось ли в вашей практике?
Здравствуйте, Danchik, Вы писали:

VC>>Здравствуйте, Shmj, Вы писали:


S>>>Хотя бы раз вам помогла возможность писать динамически типизируемый код на C#? Что это был за случай?


VC>>Про Dapper не слышал?


D>Я, например, слышал. Только вот вменяемый способ использования dynamic представить не могу, разве что результат квери сразу в json.


Мда.

public string GetShortVersion(IDbConnection connection, int? commandTimeout)
{
    dynamic row = connection.QueryFirst(@"Select 
  @@MICROSOFTVERSION Ver32Bit, 
  SERVERPROPERTY('ProductLevel') Level, 
  SERVERPROPERTY('ProductUpdateLevel') UpdateLevel
");

    int ver32Bit = row.Ver32Bit;
    string level = row.Level;
    string updateLevel = row.UpdateLevel;
    int v1 = ver32Bit >> 24;
    int v2 = ver32Bit >> 16 & 0xFF;
    int v3 = ver32Bit & 0xFFFF;
    var ver = new Version(v1, v2, v3);
    var ret = new StringBuilder(ver.ToString());
    if (!string.IsNullOrEmpty(level) && level != "RTM") ret.Append('-').Append(level);
    if (!string.IsNullOrEmpty(updateLevel)) ret.Append('-').Append(updateLevel);
    return ret.ToString();
}
Re[3]: dynamic - пригождалось ли в вашей практике?
Здравствуйте, Danchik, Вы писали:

VC>>Здравствуйте, Shmj, Вы писали:


S>>>Хотя бы раз вам помогла возможность писать динамически типизируемый код на C#? Что это был за случай?


VC>>Про Dapper не слышал?


D>Я, например, слышал. Только вот вменяемый способ использования dynamic представить не могу, разве что результат квери сразу в json.


Мда.

public string GetShortVersion(IDbConnection connection, int? commandTimeout)
{
    dynamic row = connection.QueryFirst(@"
Select 
@@MICROSOFTVERSION Ver32Bit, 
SERVERPROPERTY('ProductLevel') Level, 
SERVERPROPERTY('ProductUpdateLevel') UpdateLevel", 
        commandTimeout: commandTimeout);

    int ver32Bit = row.Ver32Bit;
    string level = row.Level;
    string updateLevel = row.UpdateLevel;
    int v1 = ver32Bit >> 24;
    int v2 = ver32Bit >> 16 & 0xFF;
    int v3 = ver32Bit & 0xFFFF;
    var ver = new Version(v1, v2, v3);
    var ret = new StringBuilder(ver.ToString());
    if (!string.IsNullOrEmpty(level) && level != "RTM") ret.Append('-').Append(level);
    if (!string.IsNullOrEmpty(updateLevel)) ret.Append('-').Append(updateLevel);
    return ret.ToString();
}