Я пытаюсь сделать 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
);