我在多個項目中有多個類,這些類可以通過中介類訪問對方。通過事件傳遞參數
目前發生的事情是,類A,火災和事件,它由B類(調解器)中的一個方法處理,它觸發了一個在C類中處理的事件。這是我可以通信的唯一方法來回A到C
但是被燒成A級事件的方法中,我有我想在C類使用
是否有傳遞它雖然作爲任何方式的int變量一個對象,只有在C類我不能訪問這些信息,我甚至已經嘗試將e轉換爲類類型。也許有一種更簡單的方法,我試圖只是添加到參數和int param中,但是我使用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來說是一種新的東西。我想問的是,是否有任何方式將標題,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);
添加你的代碼,你必須嘗試到現在爲止可以幫助 – Mzf
我認爲這些事件是自定義事件是什麼。所以你可以指定你想要傳遞的參數(f.e。'A'實例)。用'int'在類'A'中添加一個屬性,然後將'A'作爲發送者傳遞給'B',在這裏你可以將這個自定義事件傳遞給'C'或者在'B'中使用一個屬性。 –
傳遞一個參數應該是微不足道的。你的問題沒有包含足夠的代碼/細節來理解問題。 –