我開始認爲我正在鑽研不可能的事情。將事件添加到集合,然後發送該集合中的所有事件C#
所以基本上當一個屬性被更改,則將觸發一個事件:
private DateTime _DateFrom;
public DateTime DateFrom
{
get
{
return _DateFrom;
}
set
{
var oldValue = _DateFrom;
_DateFrom = value;
if (_DateFrom != oldValue)
{
//GetPropertyName is an extension method
//Used Specifically for notifying of priority changed fields
NotifyPropertyChanged(ReflectionTypes.GetPropertyName(() => this._DateFrom));
}
}
}
訂閱後會着火,然後傳遞給其他決定事件觸發它的switch語句。由於事件可能會出現兩次,因此我想將一個事件添加到集合中,然後觸發集合中的所有事件。
public void OnOpportuntiyPropertyChanged(object sender, PropertyChangedEventArgs e)
{
//Event Collection HERE?
switch (e.PropertyName)
{
//Remove hard coded strings and replace with reflection
case "DateFrom":
//Event Name + Add to Event Collection
//Event Name + Add to Event Collection
break;
case "SomeOtherChange":
//Event Name + Add to Event Collection
break;
case "MoreChanges":
//Event Name + Add to Event Collection
//Event Name + Add to Event Collection
//Event Name + Add to Event Collection
break;
}
//Events will fire with successful subscription(from another location)
}
我似乎無法得到我的頭在這一個,任何幫助非常感謝!因此,重新上限我想聲明一個事件集合,然後遍歷交換機,然後添加到集合。一旦切換過程完成,我想發起集合中的所有事件。
//編輯
所以我希望解釋的過程中,將明確的事情了一點點。
因此,在表單中的UI層上,用戶更改「DateFrom」字段,然後傳遞給「DateFrom」屬性(Opportunity Class)。由於這是一個業務關鍵變化(Custom Travel CRM),因此需要觸發一個事件(NotifyPropertyChanged)。
一旦我們點擊NotifyPropertyChanged事件,它需要確定哪個屬性已被更改。這個想法是捕捉多個業務關鍵事件,因此添加到集合中。
收集的主要原因是因爲交換機中的多個屬性類型可能具有相同的事件,而我不想將這些屬性類型觸發兩次。
我希望這可以清除一些東西,如果「說」的解決方案不合適,那就更樂意走上一條新的道路。
在最初的規範中,我強調事件的想法,所以理想情況下需要以最具擴展性的方式進行這項工作。將項目添加到集合中是項目經理的靈感。
問候,
也許最好是對你的問題作出更多的澄清。例如添加代碼以顯示您如何添加事件以及事件集合的確切位置等等。 –
「,例如添加代碼以顯示您如何添加事件以及事件集合的確切含義等等。那麼這就是問題,怎麼樣?我在問我如何創建集合,如何添加到集合以及如何激發集合中的所有元素。 –
這有點令人困惑。你能解釋爲什麼你需要一個「事件集合」嗎?誰會引發這些事件? – Leo