Не пойму как написать Expression такого куска кода:
ref float result0 = ref MemoryMarshal.GetArrayDataReference(anyFloatArray);
ref float result1 = ref Unsafe.Add(ref result0, 0);
или такого
return (t1, t2) => {
ref float result0 = ref MemoryMarshal.GetArrayDataReference(t1.data);
ref float result1 = ref Unsafe.Add(ref result0, 0);
return result1;
};
У меня получилось вот такое
var getArrayDataReference
= typeof(MemoryMarshal).GetMethods().First(x => x.Name == "GetArrayDataReference" && x.IsGenericMethod).MakeGenericMethod(typeof(float)); // {Single& GetArrayDataReference[Single](Single[])}
var unsafe_Add = typeof(Unsafe).GetMethods().First(x => x.Name == "Add" && x.IsGenericMethod).MakeGenericMethod(typeof(float)); // тут получаю Single& Add[Single](Single ByRef, Int32)
var result0 = Expression.Call(getArrayDataReference, [anyFloatArray]); // тут все OK
var result1 = Expression.Call(unsafe_Add, [result0, Expression.Constant(0)]); // System.ArgumentException: "Expression of type 'System.Single&' cannot be used
// for parameter of type 'System.Single' of method 'Single& Add[Single](Single ByRef, Int32)' Arg_ParamName_Name"
Подскажите, как исправить ошибку?