Если множитель зависит от элемента, то либо вам также нужно будет передать элемент, или вам необходимо вернуть Func<T, double>
:
public double ComputeBasicAmount<T>(double basicLimit,
Func<T, double> multiplier,
T item)
{
return basicLimt * multiplier(item);
}
...
double basicAmt = ComputeBasicAmount<Foo>(
foo.BasicLimit,
x => x.EligibleAmt / x.RoomRate,
foo)
или
public Func<T, double> ComputeBasicAmount<T>(double basicLimit,
Func<T, double> multiplier)
{
return item => basicLimt * multiplier(item);
}
...
var basicAmtFunc = ComputeBasicAmount<Foo>(
foo.BasicLimit,
x => x.EligibleAmt / x.RoomRate);
var basicAmt = basicAmntFunc(foo);
Если ни один из них не является тем, что вы искали, пожалуйста, объясните, где вы хотите указать фактическое значение T
, чтобы вы могли определить множитель.
Первое очень похоже на просто Func<double>
для вычисления множителя, конечно ... что, в свою очередь, очень похоже на , вызывающий , который Func<double>
при вычислении аргументов, чтобы получить вернуться к исходной версии, которая занимает всего два раза.