//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Runtime { using System; using System.Activities.DynamicUpdate; using System.Runtime; using System.Runtime.Serialization; using System.Collections.ObjectModel; [DataContract] class ActivityInstanceReference : ActivityInstanceMap.IActivityReference { ActivityInstance activityInstance; internal ActivityInstanceReference(ActivityInstance activity) { this.activityInstance = activity; } [DataMember(Name = "activityInstance")] internal ActivityInstance SerializedActivityInstance { get { return this.activityInstance; } set { this.activityInstance = value; } } Activity ActivityInstanceMap.IActivityReference.Activity { get { return this.activityInstance.Activity; } } public ActivityInstance ActivityInstance { get { return this.activityInstance; } } void ActivityInstanceMap.IActivityReference.Load(Activity activity, ActivityInstanceMap instanceMap) { // The conditional calling of ActivityInstance.Load is the value // added by this wrapper class. This is because we can't guarantee // that multiple activities won't have a reference to the same // ActivityInstance. if (this.activityInstance.Activity == null) { ((ActivityInstanceMap.IActivityReference)this.activityInstance).Load(activity, instanceMap); } } } }