C# 调用多个事件或具有多个参数的单个事件
我制作了一个自定义活动,如下所示:C# 调用多个事件或具有多个参数的单个事件,c#,custom-events,C#,Custom Events,我制作了一个自定义活动,如下所示: public delegate void ResponseReceivedDelegate(string textToSpeak, string offeringText, string offeringImageNo, string animationName, string emotion); public static event ResponseReceivedDelegate ResponseReceivedEvent; if (ResponseR
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);
}
我已将此事件注册到多个其他脚本中,以便知道此事件已发生
现在的问题是,有不同的参数(如上所述)。我的每个脚本都需要一个参数,特定脚本不需要rest参数。就像一个脚本使用textToSpeak,而另一个脚本使用offeringText等等。当事件发生时。我的问题是我需要写单独的事件还是这一个事件就足够了。?哪种方法正确
ResponseReceivedEventForSpeak (textToSpeak);
ResponseReceivedEventForOfferingText (offeringText);
ResponseReceivedEventForImageNo (offeringImageNo,);
//and so on...
或
正如Jeroen在评论中所写的那样,我建议使用从EventArgs派生的类。在此类中,您可以使用枚举指定要传递的字符串:
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;}
}
然后,您可以对所有内容使用相同的事件,同时仍然只发送相关字符串,并保持代码标准:
public delegate void ResponseReceivedDelegate(object sender, ResponseReceivedEventArgs eventArgs);
这是一个基于观点的东西-你可以做一个包罗万象的东西,或者你可以有个人。。这是你的设计。也许吧,但我认为只有一种专业方法我想知道它的利弊。“我认为只有一种专业方法”-这也是自以为是的。如果事件同时发生,你可以创建一个大型事件。我宁愿使用从
EventArgs
public delegate void ResponseReceivedDelegate(object sender, ResponseReceivedEventArgs eventArgs);