public void RaiseOnDeserialization() { SerializationEventRaiser eventRaiser = new SerializationEventRaiser(); ClassWithDeserializationEvents instance = new ClassWithDeserializationEvents(); Assert.That(instance.OnBaseDeserializingCalled, Is.False); Assert.That(instance.OnBaseDeserializedCalled, Is.False); Assert.That(instance.OnDeserializingCalled, Is.False); Assert.That(instance.OnDeserializedCalled, Is.False); Assert.That(instance.OnDeserializationCalled, Is.False); eventRaiser.RaiseDeserializationEvent(instance, null); Assert.That(instance.OnBaseDeserializingCalled, Is.False); Assert.That(instance.OnBaseDeserializedCalled, Is.False); Assert.That(instance.OnDeserializingCalled, Is.False); Assert.That(instance.OnDeserializedCalled, Is.False); Assert.That(instance.OnDeserializationCalled, Is.True); }
//public static ConstructorEmitter ImplementDeserializationConstructorByThrowing (IClassEmitter classEmitter) //{ // ArgumentUtility.CheckNotNull ("classEmitter", classEmitter); // ConstructorEmitter emitter = classEmitter.CreateConstructor (new[] { typeof (SerializationInfo), typeof (StreamingContext) }); // emitter.CodeBuilder.AddStatement ( // new ThrowStatement ( // typeof (NotImplementedException), // "The deserialization constructor should never be called; generated types are deserialized via IObjectReference helpers.")); // return emitter; //} //public static ConstructorEmitter ImplementDeserializationConstructorByThrowingIfNotExistsOnBase (IClassEmitter classEmitter) //{ // ArgumentUtility.CheckNotNull ("classEmitter", classEmitter); // var serializationConstructorSignature = new[] { typeof (SerializationInfo), typeof (StreamingContext) }; // ConstructorInfo baseConstructor = classEmitter.BaseType.GetConstructor ( // BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, // null, // serializationConstructorSignature, // null); // if (baseConstructor == null) // return ImplementDeserializationConstructorByThrowing (classEmitter); // else // return null; //} public static void RaiseOnDeserialization(object deserializedObject, object sender) { ArgumentUtility.CheckNotNull("deserializedObject", deserializedObject); s_serializationEventRaiser.RaiseDeserializationEvent(deserializedObject, sender); }