Esempio n. 1
0
        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);
        }