我有以下方法(在我的dll中实现第三方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);
}
我想从函数中调用此方法。我知道如何在调用此方法时将对象作为第一个参数传递。但是如何传递第二个参数(Interface)。 非常感谢任何帮助。
答案 0 :(得分: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);
答案 1 :(得分: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);
答案 2 :(得分: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容器(Unity,Ninject)来完成这项工作。这也称为Dependency Injection。