繁体   English   中英

protobuf-net:如何序列化EventHandler

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM