Задать вопрос

Как сделать Expression.Assign из int& в int?

Я пытаюсь сделать LINQ Expression, который реализует следующий код:
var bytes = new byte[10 * sizeof(int)];
var bytesSpan = bytes.AsSpan();
var intSpan = MemoryMarshal.Cast<byte, int>(bytesSpan);
var intValue = 0;
intValue = intSpan[0];

, но у меня Exception в Expression.Assign: Expression of type 'int&' cannot be used for assignment to type 'int'
var variableBufferSpan = Expression.Variable(typeof(ReadOnlySpan<>).MakeGenericType(typeof(byte)), "bytesSpan");
var variableItem = Expression.Variable(typeof(int), "intValue");
var indexPropertyInfo = typeof(ReadOnlySpan<>)
        .MakeGenericType(typeof(int))
        .GetProperty("Item");

var makeCallExpr = Expression.Call(
                        null,
                        memoryCastMethod.MakeGenericMethod(typeof(byte), typeof(int)),
                        variableBufferSpan
                        );

var makeIndexExpr = Expression.Call(
        makeCallExpr,
        indexPropertyInfo.GetGetMethod(true),
        Expression.Constant(0)
    );

Expression.Assign(
        variableItem,
        makeIndexExpr
        );
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@Degot Автор вопроса
Нашёл альтернативу. Вместо MemoryMarshal.Cast использовать MemoryMarshal.Read
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы