我想要的是编写一个类,它可以通过将类型序列化为Byte []并将事件DeSerializing a Byte []发送回Object来发送对象。
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);
}
}
发送部分正常工作没有问题,因为我可以预先确定类型 调用Send方法。
obj.Send<List<String>>(myList);
现在我想用一个事件创建另一个方向(Byte [] - &gt; T)。
因此,我在订阅Source类中的Event时指定EventDataType的值。
有优雅的解决方案吗?
我不想指定类似“公共类”的类型 因为我希望班级可以接收和发送不同的obj /类型
此致 rubiktubik
答案 0 :(得分:0)
您必须指定T in 接口声明和类声明。
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
创建派生类以传入。