无法调用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)
        { 
           //------------
        }
    }

无法调用c#中的Delegate ResponseRecived.Invoke()方法

您需要检查

if(ResponseRecieved != null)

调用事件之前

通常,在使用事件时,在使用它们之前,我们需要检查是否为null。你可以在这里阅读

调用事件-一旦类声明了事件,它就可以处理该事件就像所指示的委托类型的字段一样。字段如果没有客户端将委托连接到事件,或者它引用了在事件。因此,调用事件通常是通过以下方式完成的:检查null,然后调用事件。

如果希望调用OnResponseReceived方法,则需要将其注册到事件中。你可以这样做:

ResponseRecieved += OnResponseReceived;

请确保OnResponseReceived的格式正确,并在调用事件之前执行该操作。

另一种方法是只调用方法。。。