[英]protobuf-net: how to serialize an EventHandler
我正在尝试使用protobuf-net使用EventHandler序列化一个类,使用以下代码:
[ProtoContract]
class Thing
{
[ProtoMember(5, AsReference = true)]
public EventHandler _DoSomething;
public event EventHandler DoSomething
{
add { _DoSomething += value; }
remove { _DoSomething -= value; }
}
public void PerformSomething(object sender, EventArgs args)
{
}
}
[TestMethod]
public void SerializingAClassWithAnEvent_Deserializes()
{
var Guy1 = new Thing() {};
var Guy2 = new Thing() {};
Guy2.DoSomething += Guy1.PerformSomething;
Assert.IsNotNull(Guy2._DoSomething);
MemoryStream buffer = new MemoryStream();
Serializer.Serialize(buffer, Guy2);
MemoryStream afterStream = new MemoryStream(buffer.ToArray());
var outGuy = Serializer.Deserialize<Thing>(afterStream);
Assert.IsNotNull(outGuy._DoSomething);
}
此代码编译并运行正常,但第二个断言失败,因为_DoSomething EventHandler仍然为null。 我错过了什么?
从这里的文档不支持EventHandlers
custom classes that:
are marked as data-contract;
have a parameterless constructor;
for Silverlight: are public
many common primitives etc
single dimension arrays: T[]
List<T> / IList<T>
Dictionary<TKey,TValue> / IDictionary<TKey,TValue>
any type which implements IEnumerable<T> and has an Add(T) method
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.