2012-12-29 11 views
1

這裏是代碼行......很簡單的和衆所周知的爲大家...不能在MonoTouch中使用事件處理程序的通用版本中正常

public event EventHandler<TimeSpan> TimeExtended; 
在Visual Studio

(在Windows上我的意思是)它的工作原理像往常一樣,但在MonoTouch中,我無法使用TimeSpan,因爲它不能轉換爲EventArgs,我只能使用從EventArgs派生的類型。我怎樣才能在單聲道中使用這個通用事件處理程序?

感謝

+0

創建一個從'EventArgs'派生並且具有'TimeSpan'類型的屬性的類。 –

+0

我做到了這一點,它的工作,但對於我已經從另一個對象派生的一些我自己的類,我不能在C#中我們不能從2個對象派生。 – Peyman

+1

該代碼無法在任何地方工作。 'EventHandler '需要類型'T',它從'EventArgs'繼承而'TimeSpan'不需要。 – jam40jeff

回答

0

我做了這個事件處理程序,我猜它正在工作。

public delegate void GEventHandler<T>(object sender, T args); 
5

它可以在Visual Studio,因爲你正在使用.NET 4.5,其中類型約束被放棄了。只需定義自己的類繼承EventArgs。如果你需要額外的數據,那麼也包括它。

public class TimeExtendedEventArgs : EventArgs 
{ 
    public TimeSpan TimeExtended { get; set; } 
    public Player Player { get; set; } 
} 

public event EventHandler<TimeExtendedEventArgs> TimeExtended; 
+0

你是對的...直到mono支持.net 4.5我需要使用另一種方式。像你這樣做。 – Peyman

相關問題