在要触发发泄的类中声明一个事件。我不知道类型,FirebaseAnalytics.ParameterValue
因为我不熟悉 firebase 也不熟悉您的应用程序。我将假设它是一个字符串:
public event EventHandler<string> raiseFirebaseEvent;
在您的代码中的任何位置(通常是声明事件的不同类,并且在调用之后是相同的)您需要为此事件添加一个侦听器,这意味着向事件添加一个方法,以便在事件之后调用扳机。
在这个其他类中,您将拥有一个订阅事件的方法:
prevate void FireBaseLogger(FirebaseAnalytics.ParameterValue value) {
FirebaseAnalytics.LogEvent("time_spent", value,
time_spent_in_seconds);
}
time_spent_in_seconds
我猜应该是这个其他类的变量。
在这个类的某个地方,通常是在构造函数中,或者在你确定代码弹出将通过那里的某个地方,你应该订阅该事件。为此,您需要声明事件的事件持有者类的引用:
EventHolderClassInstance.raiseFirebaseEvent += FireBaseLogger;
订阅中没有传递任何参数,只有方法。
然后,在您的 EventHolderClass 中,当您调用事件并传递字符串参数时,只要在调用之前完成订阅,就会调用订阅的方法。
raiseFirebaseEvent?.Invoke(this, FirebaseAnalytics.ParameterValue);
当没有订阅的方法raiseFirebaseEvent
为空时,这就是问号的用途。如果没有先前的订阅raiseFirebaseEvent
为空,并且没有任何反应。
如果FirebaseAnalytics.ParameterValue
不是字符串类型,请在事件中和在添加侦听器的类中订阅的私有方法中相应地更改类型,或者在订阅的地方进行相应的更改,这意味着相同。不确定这是否是您要问的。