如何在c#中将一个类的异步方法调用到另一个类
本文关键字:一个 异步方法 调用 另一个 | 更新日期: 2023-09-27 18:08:52
我有一个接口,它有一个方法原型:
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方法Reciever1类的ProcessWebhook方法TestController类,但不能这样做。我尝试使用classname。methodname方式,但它没有显示方法。
有什么想法吗?
谢谢!
在TestController中,您需要有Reciever1
的实例。创建它使用new
关键字:var receiver = new Reciever1();
或解决它从IoC容器,如果你使用DependencyInjection。
要使用类名(如classname.methodname
)调用方法,必须将方法标记为static
。