我有以下功能:
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&lt;&gt;,Generics和lambda表达式时我不是很舒服,所以任何帮助都将不胜感激
答案 0 :(得分: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;
答案 1 :(得分: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();