2017-03-12 50 views
1

あるオブジェクトのメソッド呼び出しが別のオブジェクトのメソッドを呼び出すような動作をすることができるかどうかは疑問でした。他のオブジェクトからメソッドを呼び出すメソッド呼び出し

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()を言うことができる、それがゲッターを呼び出した後、返されたアクションを呼び出すことによってデリゲート経由で呼び出します。

+0

これをリフレクションまたは何らかのIL書き換えで行うことは可能でしょうか? – Puchacz

0

リフレクションを使用して、同じタイプ情報でメソッド呼び出しを行うことができます。しかし、他のタイプのメソッドは不可能です。私はそう思う。

関連する問題