2014-02-07 49 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创建派生类中通过。