Я пытаюсь использовать метод Convert как для функций, так и для действий, поэтому я могу избежать написания дублирующих методов, принимающих делегатов типа Func. Преобразовать метод исходит из Convert Action<T> to Action<object>Динамически конвертировать Func в соответствующее действие
public class Program
{
static void Main(string[] args)
{
var program = new Program();
var mi = program.GetType().GetMethod("Function", BindingFlags.Instance | BindingFlags.Public);
// Can be any version of Func
var funcType = typeof(Func<int, int>);
// Create action delegate somehow instead
var del = mi.CreateDelegate(funcType, null);
// Or dynamically convert the Func to a corresponding Action type (in this case Action<int>)
}
// Or find a way to pass it in as a parameter here
public Action<object> Convert<T>(Action<T> action)
{
return o => action((T)o);
}
public int Function(int five)
{
return five;
}
}
Что не так с кодом? Не работает ли это так, как вы ожидаете? – dasblinkenlight
Действие не имеет типа возврата –
Нет ничего плохого в моем коде, он написан для улучшения понимания. Я просто хочу преобразовать переменную Func в соответствующую переменную Action динамически. – Martin