我在多个项目中有多个类,这些类可以通过中介类相互访问。
目前发生的是A类,触发和事件,它由B类(调解器)中的方法处理,该方法触发在C类中处理的事件。这是我可以从A到C进行通信的唯一方式.
但是,在 A 类中触发事件的方法中,我有一个我想在 C 类中使用的 int 变量。
有什么方法可以将它作为对象传递,仅在 C 类中我无法访问信息,我什至尝试将 e 转换为类类型。也许有一种更简单的方法,我尝试只是添加到参数和 int 参数中,但是我使用的是 beginInvoke,它不会接受我无法更改此方法,因为它在代码中的其他地方使用。
protected virtual void OnProcessing(EventHandler handler, EventArgs args, int p)
{
var temp = handler;
if (temp != null)
{
var eventListeners = temp.GetInvocationList();
foreach (EventHandler e in eventListeners)
{
e.BeginInvoke(this, args, EndAsyncImageAcquiredEvent, p);
}
}
else
{
throw new FatalException("No handler is attached to the camera's ImageAcquiredEvent");
}
}
这是 A 类中触发事件的方法
progressPercentage = (int)Math.Round(sum, 0);
OnProcessing(startProcess, null);
这里的 Onprocessing 是从一个方法调用的,我想将它传递给这个方法 progressPercentage ,但想知道是否有办法通过使用参数或对象来做到这一点,以及我将如何在另一端检索它,即类C
编辑
抱歉,当我写这篇文章时,伙计们对 stackoverflow 有点陌生。我想问的是,是否有任何方法可以将 Title、ProgressPercentage、UserState、DisplayPercentage 等字段从 A 类传递到 C 类。需要 B 类,以便 C 类和 A 类没有直接关系。
最后我所做的是创建一个自定义事件和一个自定义事件参数,其中包含我想要使用的所有字段。
public event ProgressHandler StartProgress;
ProgressHandler 是我的自定义事件,是这样组成的,
public delegate void ProgressHandler(object sender, ProgressEventArgs e);
而 ProgressEventArgs 是我的习惯论点,或者是我将用来存放我的数据的对象
public ProgressEventArgs(string title, int progressPercentage, bool displayPercentage, object userState) : base (progressPercentage, userState)
{
Title = title;
ProgressPercentage = progressPercentage;
UserState = userState;
DisplayPercentage = displayPercentage;
}
所以事件在 A 类中被触发并在 B 类中处理。B 类然后获取这些数据并触发一个新事件,然后 C 类处理这个。
Class A => Class B
Class B => Class C
所以要将我的字段添加到我的自定义对象中,
ProgressEventArgs e = new ProgressEventArgs("SomeName", 25, null, true);
然后为了传递这些数据,我触发了一个事件
StartProgress(null, e);