【发布时间】:2015-01-06 09:47:01
【问题描述】:
我的主要目标是尝试了解 C# 的工作原理。
我想做这样的事情:
static class MagicalClass
{
public static List<T> DoMagic<T>(List<T> sourceList, METHODPOINTER methodOfT)
{
return (list.OrderBy(obj => obj.methodOfT())).ToList();
}
}
如果我的主要目标(如上面描述的)无法达到,我可以做一些事情,比如添加List<T> DoMagic<T>(List<T> sourceList, METHODPOINTER methodOfT) where T : SomeInterface。
我需要将 METHODPOINTER 替换为 Func<T> 之类的东西,但特定于某个类
例如:
class SomeClass
{
private static int id = 0;
private int currId = 0;
SomeClass() { currId = id++; }
public int doStuff() { return (currId); }
public int doOtherStuff() { return (currId + id); }
}
class AnotherClass
{
String proceedLogic()
{
List<SomeClass> aList = new List<SomeClass>();
aList.Add(new SomeClass());
aList.Add(new SomeClass());
var sortedList = MagicalClass.DoMagic<SomeClass>(aList, SomeClass.doStuff); // this is my goal
List<SomeClass> sameSortedList = aList.OrderBy(x => x.doStuff()).ToList(); // would be the same thing
}
}
我很确定这是可能的,C# 可以评估它,甚至扣除<SomeClass> 部分。
我想我只需要知道语法是什么以及涉及到什么系统类。
提前感谢您的回答。
【问题讨论】:
-
您是否尝试过将方法设为静态?
-
就我所经历的 Func<...> 无法将其实例限制在特定的类范围/方法中,我可以对所有内容进行硬编码,但这不是我的目标。
标签: c# generics methods delegates windows-runtime