我想知道是否有可能在一个对象的方法调用将调用另一个对象的方法时发生这种行为。
public class Example
{
public void DoSomething() { /*BASICALLY NOTHING*/ }
}
public class Engine
{
public void DoSomething() { Console.WriteLine("bleee"); }
static void Main()
{
Example e = new Example();
Engine eng = new Engine();
e.DoSomething = eng.DoSomething;
}
}
我的Example
对象完全是虚拟对象,但是我想将这个类用作基类,并在它之上构建一些更加花哨的东西。
因此e.DoSomething()
应该从eng.DoSomething()
调用方法。我不能使用继承或将Engine
对象作为参数传递给Example
。
有可能吗?怎么实现呢?这样的方法是用在某个地方吗?
答案 0 :(得分:2)
你不能以你描述的方式做到这一点,但是你可以用代表来做。
public class Example
{
public Action DoSomething {get; set;}
}
public class Engine
{
public void DoSomething() { Console.WriteLine("bleee"); }
static void Main()
{
Example e = new Example();
Engine eng = new Engine();
e.DoSomething = eng.DoSomething;
}
}
现在你可以说e.DoSomething()
它将通过调用getter然后调用返回的动作来通过委托调用。
答案 1 :(得分:0)
使用反射我们可以使用相同的类型信息进行方法调用。但其他类型的方法是不可能的。我想是的。