我想把Func放在T是通用类型的地方,作为字典中的值。所以基本上我想做点什么:
Dictionary<string, Func<MyObject, T>> _sortMappings =
new Dictionary<string, Func<MyObject, T>>()
{
{ "Name", (b) => b.Name }, // name is a string
{ "Length", (b) => b.Length }, // length is an int
{ "Date", (b) => b.Date } // a datetime object
};
这有意义吗?这可能吗?
答案 0 :(得分:5)
Func<MyObject, T>
您无法使用Func<MyObject, object>
。 T不能同时超过一种类型。因此,您需要找到string
,int
和DateTime
object
的常见类型。
答案 1 :(得分:0)
"Name", b => (T)System.Convert.ChangeType(b.Name,typeof(T))
你的功能应该是
private static T InvokeFunction<T>(Func<T> func)
{
Dictionary<string, Func<MyObject, T>> sortMappings =
new Dictionary<string, Func<MyObject, T>>();
sortMappings.Add("Name", b => (T)System.Convert.ChangeType(b.Name,typeof(T)));
sortMappings.Add("Length", b => (T)System.Convert.ChangeType(b.Length, typeof(T)));
sortMappings.Add("Date", b => (T)System.Convert.ChangeType(b.Date, typeof(T)));
return func.Invoke();
}