所以我一直在使用它一段时间,我在弄乱它的时候偶然发现了语法。但是我仍然不知道它为什么起作用,有人可以向我解释一下吗?这是如何分解的?
public T LoadData(Func<Z, T> func, Z arg) where T: class
{
T data = func(arg);
return data;
}
public T LoadData(Func<Z, T> func) where T: class
{
return LoadData<object, T>(arg => func(), null); // <--- Why does the arg => func() part work? It basically ignores the parameter when it gets passed in for some reason...
}
我像这样使用它:
public IEnumerable<CategoryTypes> GetCategories()
{
return LoadData(CategoryProvider.GetCategoriesByGroupId, 12);
}
或者
public IEnumerable<Person> GetStatesLookup()
{
return LoadData(StatesProvider.GetStates);
}
PS:这是伪代码,我使用它的真正原因比上面的例子要复杂一些......
更新以修复我在此处键入时意外反转泛型...更新 2:修复了意外定义 arg a T 而不是 Z