namespace System.Workflow.ComponentModel.Serialization { using System; using System.IO; using System.Reflection; using System.Collections; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; internal sealed class ActivityExecutorSurrogate : ISerializationSurrogate { public ActivityExecutorSurrogate() { } public void GetObjectData(object obj, SerializationInfo info, StreamingContext context) { info.AddValue("executorType", obj.GetType()); info.SetType(typeof(ActivityExecutorRef)); } public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) { return null; } [Serializable] private sealed class ActivityExecutorRef : IObjectReference { private Type executorType = null; Object IObjectReference.GetRealObject(StreamingContext context) { return ActivityExecutors.GetActivityExecutorFromType(this.executorType); } } } }