c#:将泛型函数转换为Func对象

本文关键字:Func 对象 转换 函数 泛型 | 更新日期: 2023-09-27 18:09:53

我有以下功能:

private int GetEnumTypeUnderlyingId<T>()
        {
            return (int)Enum.Parse(typeof(T), Enum.GetName(typeof(T), _franchise.LogonDialog));
        }

我想把它转换成一个Func type。我这样写:

Func<int> GetEnumTypeUnderlyingIdFunc<T> = () => (int)Enum.Parse(typeof(T), Enum.GetName(typeof(T), _franchise.LogonDialog));

但这不起作用。当我使用Func<>,泛型和lambda表达式时,我不是很舒服,所以任何帮助都将非常感谢

c#:将泛型函数转换为Func对象

您可以定义自己的委托。这是你要找的:

//Your function type
delegate int GetEnumTypeUnderlyingIdFunc<T>();
//An instance of your function type
GetEnumTypeUnderlyingIdFunc<int> myFunction = () => //some code to return an int ;

//An instance of Func delegate
Func<int> GetEnumTypeUnderlyingIdFunc = () => //some code to return an int;

另一个解决方案是

public Func<int> GetTheFunc<T>(T val)
{
    Func<int> func = () => (int)Enum.Parse(typeof(T),Enum.GetName(typeof(T),val));
    return func;
}
然后

var func = GetTheFunc<_franchise>(_franchise.LoginDialog);
//Now you can use the func, pass it around or whatever..
var intValue = func();