/// <summary> /// Constructs an activity instance suitable for executing a local activity. /// </summary> /// <param name="activityAction">The target activity action.</param> /// <param name="contextId">The activity context ID.</param> /// <returns>The constructed activity.</returns> internal ActivityBase CreateLocalActivity(LocalActivityAction activityAction, long contextId) { var activity = (ActivityBase)ActivatorUtilities.CreateInstance(NeonHelper.ServiceContainer, activityAction.ActivityType); activity.IsLocal = true; activity.Initialize(this, activityAction.ActivityType, activityAction.ActivityMethod, this.Client.DataConverter, contextId); return(activity); }
/// <summary> /// Constructs an activity instance suitable for executing a normal (non-local) activity. /// </summary> /// <param name="client">The associated client.</param> /// <param name="activityAction">The target activity action.</param> /// <param name="contextId">The activity context ID or <c>null</c> for local activities.</param> /// <returns>The constructed activity.</returns> internal static ActivityBase Create(CadenceClient client, LocalActivityAction activityAction, long?contextId) { Covenant.Requires <ArgumentNullException>(client != null); var activity = (ActivityBase)(activityAction.ActivityConstructor.Invoke(noArgs)); activity.Initialize(client, activityAction.ActivityType, activityAction.ActivityMethod, client.DataConverter, contextId); return(activity); }
/// <summary> /// Constructs an activity instance suitable for executing a normal (non-local) activity. /// </summary> /// <param name="client">The associated client.</param> /// <param name="activityAction">The target activity action.</param> /// <param name="contextId">The activity context ID.</param> /// <returns>The constructed activity.</returns> internal static ActivityBase CreateLocal(CadenceClient client, LocalActivityAction activityAction, long contextId) { Covenant.Requires <ArgumentNullException>(client != null, nameof(client)); var activity = (ActivityBase)ActivatorUtilities.CreateInstance(NeonHelper.ServiceContainer, activityAction.ActivityType); activity.IsLocal = true; activity.Initialize(client, activityAction.ActivityType, activityAction.ActivityMethod, client.DataConverter, contextId); return(activity); }