1

我有以下功能:

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 表达式时我不太自在,因此将不胜感激任何帮助

4

2 回答 2

2

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

//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;
于 2013-04-18T08:36:40.190 回答
0

另一种解决方案是

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();
于 2013-04-18T08:43:41.720 回答