public static bool ResurrectObjectReference(IObjectReference objRef) { var disposedField = objRef.GetType().GetField("disposed", BindingFlags.NonPublic | BindingFlags.Instance); if (!(bool)disposedField.GetValue(objRef)) { return(false); } disposedField.SetValue(objRef, false); GC.ReRegisterForFinalize(objRef); return(true); }
public object GetRealObject(IObjectReference obj, string id) { object realObject = SurrogateDataContract.GetRealObject(obj, base.GetStreamingContext()); if (realObject == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.Runtime.Serialization.SR.GetString("GetRealObjectReturnedNull", new object[] { DataContract.GetClrTypeFullName(obj.GetType()) }))); } this.ReplaceDeserializedObject(id, obj, realObject); return(realObject); }