1

我有以下方法(在我的 dll 中实现的第 3 方 sdk 方法):

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);
}

我想从一个函数中调用这个方法。我知道在调用此方法时如何将对象作为第一个参数传递。但是我如何传递第二个参数(接口)。任何帮助是极大的赞赏。

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

您可以将任何实现IRequest作为第二个参数传递。

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 回答