使用多个参数调用多个事件或单个事件

时间:2017-11-06 09:32:16

标签: c# custom-events

我制作了这样的自定义事件:

public delegate void ResponseReceivedDelegate(string textToSpeak, string offeringText, string offeringImageNo, string animationName, string emotion);
public static event ResponseReceivedDelegate ResponseReceivedEvent;
 if (ResponseReceivedEvent != null)
    {
       ResponseReceivedEvent (textToSpeak, offeringText, offeringImageNo, animationName, emotion);
    }

我已将此事件注册到多个其他脚本中,以便我知道此事件已发生。

现在的问题是,有不同的参数(如上所述)。我的每个脚本都需要一个参数,其他参数不需要特定的脚本。就像一个脚本使用textToSpeak,而另一个脚本使用offeringText等。 。事件被解雇了。我的问题是我需要写单独的事件,还是这个事件就够了。这是正确的方法吗?

ResponseReceivedEventForSpeak (textToSpeak);
ResponseReceivedEventForOfferingText (offeringText);
ResponseReceivedEventForImageNo (offeringImageNo,);
//and so on...

ResponseReceivedEvent (textToSpeak, offeringText, offeringImageNo, animationName, emotion);

???????????

1 个答案:

答案 0 :(得分:1)

我建议,正如Jeroen在他的评论中所写,使用从EventArgs派生的类。在这个类中,您可以使用枚举来指定传递的字符串:

ContextStoppedEvent

然后,您可以对所有内容使用相同的事件,同时仍然只发送相关的字符串,并保持您的代码标准:

public class ResponseReceivedEventArgs : EventArgs
{
    public enum EventType
    {
        TextToSpeak,
        OfferingText,
        OfferingImageNo,
        AnimationName,
        Emotion
    }
    public ResponseReceivedEventArgs(EventType eventType, String eventValue)
    {
        Type = eventType;
        Value = eventValue
    }

    public EventType Type {get;}
    public String Value {get;}
}