无法调用c#中的Delegate ResponseRecived.Invoke()方法
本文关键字:Invoke 方法 ResponseRecived Delegate 调用 中的 | 更新日期: 2023-09-27 18:29:12
我使用委托使用带2个参数的invoke方法。但它给出了空引用异常错误:
对象引用未设置为对象的实例。
无法将控件转换为调用主页中的方法。有人能告诉我为什么这么…吗。。?谢谢
public override event ResponseRecievedDelegate ResponseRecieved;
if (reqName == REQUEST_NAME.abc)
{
IJsonParser parser = new JsonParser();
Object resp = parser.GetData(responseString );
ResponseRecieved.Invoke(reqName, resp); // unable to invoke this method giving null exception ..
}
invoke方法的实现类似于:
private void OnResponseReceived(REQUEST_NAME requestName, Object response)
{
if (requestName == REQUEST_NAME.abc)
{
//------------
}
else if (requestName == REQUEST_NAME.def)
{
//------------
}
}
您需要检查
if(ResponseRecieved != null)
调用事件之前
通常,在使用事件时,在使用它们之前,我们需要检查是否为null。你可以在这里阅读
调用事件-一旦类声明了事件,它就可以处理该事件就像所指示的委托类型的字段一样。字段如果没有客户端将委托连接到事件,或者它引用了在事件。因此,调用事件通常是通过以下方式完成的:检查null,然后调用事件。
如果希望调用OnResponseReceived
方法,则需要将其注册到事件中。你可以这样做:
ResponseRecieved += OnResponseReceived;
请确保OnResponseReceived
的格式正确,并在调用事件之前执行该操作。
另一种方法是只调用方法。。。