2016-09-26 43 views
0

我有一个接口,它有一个方法的原型:如何调用一个类的异步方法到c#中的另一个类?

public interface IDataReceiver 
{ 
    Task<HttpResponseMessage> ReceiveAsync(string id, HttpRequestMessage request); 

} 

我有一个抽象类继承接口

public abstract class DataReceiver :IDataReceiver 
    { 

     protected DataReceiver() 
     { 
     } 
     public abstract Task<HttpResponseMessage> ReceiveAsync(string id, HttpRequestMessage request); 
     protected virtual async Task<NameValueCollection> ReadAsFormDataAsync(HttpRequestMessage request) 

    { 
      //code to read the html request body 
    } 

} 

我有另一个类继承DataReceiver

public class Reciever1 :DataReceiver 
    { 
     internal const string TokenParameter = "token"; 

     public override async Task<HttpResponseMessage> ReceiveAsync(string id, HttpRequestMessage request) 
     { 
      if (id == null) 
      { 
       throw new ArgumentNullException(id); 
      } 

      // Read the request entity body 
      NameValueCollection data = await ReadAsFormDataAsync(request); 
      string token = data[TokenParameter]; 
      HttpResponseMessage tstmsg = request.CreateResponse(HttpStatusCode.OK, "Success"+token); 
      return tstmsg; 
} 
} 

我有控制器类

public class TestController : ApiController 
    { 
     [HttpPost] 

     public Task<HttpResponseMessage> ProcessData(string name) 
     { 
      retrun ProcessWebhook(name); 
     } 

     private async Task<HttpResponseMessage> ProcessWebhook(string RecieverName) 
     { 
      //how to call the ReceiveAsync method of Reciever1 class 

      return Request.CreateResponse(HttpStatusCode.OK, "Success" +" "+ RecieverName); 

      } 
} 

我想打电话给ReceiveAsync在ProcessWebhook的TestController类但是没能做到that.i尝试使用classname.methodname的方式,但它没有显示的方法Reciever1类的方法方法。

对此有什么想法吗?

谢谢!

回答

0

在TestController中,您需要有一个实例Reciever1。使用new关键字创建它:var receiver = new Reciever1();或者如果您使用DependencyInjection,则从IoC容器解析它。

要调用使用它的类名如classname.methodname的方法,该方法必须标记为static

+0

谢谢....... – TechnoSavvy

相关问题