从非静态类动态调用非静态方法的最简单方法?
答
你是否在这样的事情?
class A
{
public int Value;
public int Add(int a) { return a + Value; }
public int Mul(int a) { return a * Value; }
}
class Program
{
static void Main(string[] args)
{
A a = new A();
a.Value = 10;
Func<int, int> f;
f = a.Add;
Console.WriteLine("Add: {0}", f(5));
f = a.Mul;
Console.WriteLine("Mul: {0}", f(5));
}
}
如果你需要它的呼吁相绑定,如C++成员函数指针的对象,我不知道,C#语言支持。不过,您可以始终使用拉姆达或代表:
Func<A,int,int> f = delegate(A o, int i) { return o.Add(i); };
Console.WriteLine("Add: {0}", f(a, 5));
f = (A o, int i) => o.Mul(i);
Console.WriteLine("Mul: {0}", f(a, 5));
答
您可能需要添加更多详细信息。代表是一个很好的选项选项,如果只有方法名称,而不是指向它的实际指针,则反映出来。
我们需要更多关于您正在尝试执行的操作的信息。请举个例子。 – 2008-10-21 22:13:52
我不想过于具体,因为我愿意将我的代码合并到任何干净的解决方案中。在我开始编写任何代码之前我只想要一个干净的解决方案 – jdelator 2008-10-21 22:46:49