У меня есть несколько вспомогательных методов, которые выплевывают лямбда-функции на основе их параметров, в основном это частичное применение. Теперь есть другое место, где используются эти Fun c <>, где для ясности журнала и отладки было бы неплохо, если бы я мог дать собственные имена для сгенерированной лямбда-метки MethodInfo, есть ли способ для этого?
Пример:
public static Func<IAttrProxy, IAttrProxy, bool> NumberListEquals(double tolerance = 0)
{
Func<IAttrProxy,IAttrProxy,bool> lambda = (a, b) =>
{
if (AsNumberList(a, out IReadOnlyList<double> aValue) == false)
return false;
if (AsNumberList(b, out IReadOnlyList<double> bValue) == false)
return false;
if (aValue.Count != bValue.Count)
return false;
for (int i = 0; i < aValue.Count; i++)
{
if (Math.Abs(aValue[i] - bValue[i]) <= tolerance)
return false;
}
return true;
};
MethodInfo methodInfo = lambda.Method;
methodInfo.Name = "NumberListEquals with tolerance: " + tolerance;
return lambda;
}
Очевидно, что строка со второй по последнюю не компилируется. Есть ли способ достичь желаемого эффекта? Чтобы позже, когда я использовал параметр Fun c <>, я мог получить .Method.Name, и он содержит «NumberListEquals с допуском: ..