Exception.SerializeObjectState Olay (System) | Microsoft Docs
Aşağıdaki örnek, SerializeObjectState olayını işleyen bir BadDivisionException tanımlar.The following example defines a BadDivisionException that handles the SerializeObjectState event. Ayrıca, ISafeSerializationData arabirimini uygulayan BadDivisionExceptionState adlı iç içe bir yapı olan bir durum nesnesi içerir.It also contains a state object, which is a nested structure named BadDivisionExceptionState that implements the ISafeSerializationData interface.
Bir kayan nokta sıfıra bölme gerçekleştiğinde BadDivisionException özel durumu oluşturulur.The BadDivisionException exception is thrown when a floating-point division by zero occurs. İlk bölüm sıfıra kadar, örnek bir BadDivisionException nesnesi oluşturur, serileştirir ve özel durumu oluşturur.During the first division by zero, the example instantiates a BadDivisionException object, serializes it, and throws the exception. Sonraki bölümler sıfıra geldiğinde, örnek önceden serileştirilmiş nesneyi serileştirir, yeniden serileştirir ve özel durum oluşturur.When subsequent divisions by zero occur, the example deserializes the previously serialized object, reserializes it, and throws the exception. Nesne serileştirme, seri durumdan çıkarma, yeniden serileştirme ve seri durumdan çıkarma sağlamak için örnek, hem BadDivisionException sınıf oluşturucusunda hem de ISafeSerializationData.CompleteDeserialization uygulamasında SerializeObjectState olay işleyicisini ekler.To provide for object serialization, deserialization, reserialization, and deserialization, the example adds the SerializeObjectState event handler both in the BadDivisionException class constructor and in the ISafeSerializationData.CompleteDeserialization implementation.
Özel durum nesnesi ISafeSerializationData arabirimini uygular.The exception state object implements the ISafeSerializationData interface.
SerializeObjectState olayı abone olduğunda, özel durum seri durumdan çıkarılmış ve boş bir özel durum olarak oluşturulur.When the SerializeObjectState event is subscribed to, the exception is deserialized and created as an empty exception. Özel durumun Oluşturucusu çalıştırılmaz ve özel durum durumu da seri durumdan çıkarılmaz.The exception's constructor is not run, and the exception state is also deserialized. Özel durum durumu nesnesinin CompleteDeserialization geri çağırma yöntemi daha sonra, seri durumdan çıkarılan verileri boş özel duruma gönderebilmesi için bilgilendirilir.The CompleteDeserialization callback method of the exception state object is then notified so that it can push deserialized data into the empty exception.
SerializeObjectState olayı, özel durum verilerini seri hale getirmek ve serisini kaldırmak için saydam özel durum türlerini sağlarThe SerializeObjectState event enables transparent exception types to serialize and deserialize exception data. Saydam kod, içinde çalıştığı izin kümesi sınırları dahilinde komutları yürütebilir, ancak kritik kodu yürütemez, çağıramaz, türetemez veya içeremez.Transparent code can execute commands within the bounds of the permission set it is operating within, but cannot execute, call, derive from, or contain critical code.
SerializeObjectState olayın abone olmaması durumunda, Exception Oluşturucusu kullanılarak her zamanki gibi seri kaldırma gerçekleşir.If the SerializeObjectState event is not subscribed to, deserialization occurs as usual using the Exception constructor.
Genellikle, SerializeObjectState olayı için bir işleyici, serileştirme için sağlamak üzere özel durumun oluşturucusuna eklenir.Typically, a handler for the SerializeObjectState event is added in the exception's constructor to provide for its serialization. Ancak, SerializeObjectState olay işleyicisi yürütüldüğünde Oluşturucu yürütülmediği için, seri durumdan çıkarılan bir özel durumu serileştirmek, özel durumun serisini kaldırma çalıştığınızda bir SerializationException özel durum oluşturabilir.But because the constructor is not executed when the SerializeObjectState event handler executes, serializing a deserialized exception can throw a SerializationException exception when you try to deserialize the exception. Bunu önlemek için, ISafeSerializationData.CompleteDeserialization yönteminde SerializeObjectState olayının işleyicisini de eklemeniz gerekir.To avoid this, you should also add the handler for the SerializeObjectState event in the ISafeSerializationData.CompleteDeserialization method. Bir çizim için örnekler bölümüne bakın.See the Examples section for an illustration.
Bu olay abone olunursa ve kullanılıyorsa, devralma hiyerarşisinde izleyen tüm türetilmiş türlerin aynı serileştirme mekanizmasını uygulaması gerekir.If this event is subscribed to and used, all derived types that follow in the inheritance hierarchy must implement the same serialization mechanism.