Один из способов сделать это - использовать делегирование для функции Lerp()
. Было бы проще всего, если бы все они имели одну и ту же подпись.
например.,
public static Template CreateTemplate<T>( ... , Func<T, T, int, Template> lerp)
where T : CommonClass
{
XmlNode mineDataMin = mineDataMaster.SelectSingleNode("DataMinimum");
XmlNode mineDataMax = mineDataMaster.SelectSingleNode("DataMaximum");
return lerp(new T(mineDataMin), new T(mineDataMax), _strength);
}
_template = CreateTemplate( ... , MineInfo.Lerp);
Или, если у них нет общей подписи, используйте делегат с "наибольшим общим знаменателем" для подписи, чтобы вызвать фактическую функцию lerp.
_template = CreateTemplate( ... ,
(min, max, strength) =>
{
return SomeOtherInfoInfo.Lerp(min, max); //doesn't use strength
});
В противном случае всегда есть отражение.