C # CodeDom Конвертировать между типами - PullRequest
0 голосов
/ 18 июля 2011

Я пытаюсь использовать CodeDom для создания следующей строки кода:

object o = (object)bytes

Где "байты" представляют байтовый массив: byte [] bytes = null;

Я мог бы использовать метод VariableDeclaration или, возможно, даже метод CodeAssign для генерации левой стороны этой строки, но как я могу создать правую сторону этой строки?

IЯ открыт для любых предложений - спасибо!

Эван

1 Ответ

1 голос
/ 18 июля 2011

Эта форма обращения называется кастингом. Конверсия означает что-то вроде Convert.ToInt32("123") или int.Parse("123").

В ролях ( Ваша точная линия object o = (object)bytes;)

var declaration = new CodeVariableDeclarationStatement()
{
    Name = "o",
    Type = new CodeTypeReference(typeof(object)),
    InitExpression = new CodeCastExpression(typeof(object), new CodeVariableReferenceExpression("bytes"))
};

Преобразование ( Мой пример преобразования object o = Convert.ToInt32("123"))

var declaration = new CodeVariableDeclarationStatement()
{
    Name = "o",
    Type = new CodeTypeReference(typeof(object)),
    InitExpression = new CodeMethodInvokeExpression(
        new CodeTypeReferenceExpression(typeof(Convert)),
        "ToInt32",
        new CodePrimitiveExpression("123"))
};
...