2014-02-07 65 views
0

我想要的是編寫一個類,該類可以通過序列化類型爲字節[]和事件DeSerializing Byte []返回對象來發送對象。使用通用類型創建事件

public interface ISource 
    { 
     event EventHandler<T> myevent; 
     void Send<T>(T dataToSend); 
    } 

事件代碼行在編譯器中不起作用,但這正是我所需要的。

實施例實現:

public class Source : ISource 
{ 
    ISerialPort _port; 

    public Source (ISerialPort port) 
    { 
     _port = port; 
    } 

    public event EventHandler<T> myevent; 

    public void Send<T>(T dataToSend) 
    { 
     //Converts type to an Byte[] with Serialisation 
     //And send the Data 
     _port.Send(ConvertedByteArray); 
    } 
} 

發送部分工作沒有問題,因爲我可以precify當 調用發送方法的類型。

obj.Send<List<String>>(myList); 

現在我想創建一個事件的另一個方向(字節[] - > T)。

因此,我在訂閱源類中的事件時指定了EventDataType的值。

有沒有一個優雅的解決方案呢?

我不希望因爲我想這個類可以在 接收和發送不同的OBJ /類型

問候 rubiktubik

回答

0

必須指定T接口來指定,如「公共課」 類型宣言和階級宣言也是如此。

interface ISource<T> where T : EventArgs 
{ 
    event EventHandler<T> MyEvent; 
    void Send<G>(G dataToSend); 
} 
public class Source<T> : ISource<T> where T : EventArgs 
{ 

    public event EventHandler<T> MyEvent; 

    public void Send<T>(T dataToSend) 
    { 
     throw new NotImplementedException(); 
    } 
} 

EventArgs創建派生類中通過。