1

次の方法があります(サードパーティのSDKメソッドがDLLに実装されています):

public void PlaceItem(myItemData item, IRequest request)
{
    var item = (ItemClassData)item; //**myItemData is the base class for ItemClassData**
    item.Id = 101;
    request.Succeeded(item.Id);
}

インターフェイス パラメータは次のとおりです。

public interface IRequest
{
    void Failed(string Error);
    void Succeeded(string ItemId);
}

このメソッドを関数から呼び出したい。このメソッドを呼び出すときに、オブジェクトを最初のパラメーターとして渡す方法を知っています。しかし、どうすれば 2 番目のパラメーター (インターフェース) を渡すことができますか。どんな助けでも大歓迎です。

4

3 に答える 3

5

このインターフェースを実装するクラスを作成するだけです

public class MyClass : IRequest
{
    public void Failed(string Error) { // do something }
    public void Succeeded(string ItemId) { // do something }
}

そのインスタンスを作成し、メソッドに渡します

var inst = new MyClass();    
PlaceItem(..., inst);
于 2013-12-21T12:45:27.010 に答える
1

の任意の実装をIRequest2 番目のパラメーターとして渡すことができます。

public class Request : IRequest
{
    public void Failed(string Error)
    {
       //do something here
    }

    public void Succeeded(string ItemId);
    {
       //do something here
    }
}

//Calling your method
Request mySecondPara = new Request();

PlaceItem(item, mySecondPara)

また、IOC コンテナー ( UnityNinject ) を使用してジョブを実行することもできます。これは依存性注入とも呼ばれます。

于 2013-12-21T12:49:05.160 に答える
1

そのインターフェースを実装する任意のクラスのオブジェクトを渡すことができます。

例えば:

public class MyClass : IRequest
{
    // class definition and implementation of methods
   void Failed (string Error) {};
   void Succeeded (string ItemId) {};
}

MyClassこれで、そのメソッドでのオブジェクトを渡すことができます。

// create an instance of MyClass
MyClass objMyClass = new MyClass();

// call the method
PlaceItem(myDataItem, objMyClass);
于 2013-12-21T12:43:37.110 に答える