Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / ActivityContext.cs / 1305376 / ActivityContext.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities { using System; using System.Activities.Runtime; using System.Activities.Tracking; using System.Diagnostics.CodeAnalysis; using System.Runtime; [Fx.Tag.XamlVisible(false)] public class ActivityContext { ActivityInstance instance; ActivityExecutor executor; bool isDisposed; // Used by subclasses that are pooled. internal ActivityContext() { } // these can only be created by the WF Runtime internal ActivityContext(ActivityInstance instance, ActivityExecutor executor) { Fx.Assert(instance != null, "valid activity instance is required"); this.instance = instance; this.executor = executor; this.Activity = this.instance.Activity; } internal LocationEnvironment Environment { get { ThrowIfDisposed(); return this.instance.Environment; } } internal bool AllowChainedEnvironmentAccess { get; set; } internal Activity Activity { get; set; } internal ActivityInstance CurrentInstance { get { return this.instance; } } public string ActivityInstanceId { get { ThrowIfDisposed(); return this.instance.Id; } } public Guid WorkflowInstanceId { get { ThrowIfDisposed(); return this.executor.WorkflowInstanceId; } } public WorkflowDataContext DataContext { get { ThrowIfDisposed(); if (this.instance.DataContext == null) { this.instance.DataContext = new WorkflowDataContext(this.executor, this.instance); } return this.instance.DataContext; } } internal bool IsDisposed { get { return this.isDisposed; } } public T GetExtension() where T : class { ThrowIfDisposed(); return this.executor.GetExtension (); } internal void Reinitialize(ActivityInstance instance, ActivityExecutor executor) { this.isDisposed = false; this.instance = instance; this.executor = executor; this.Activity = this.instance.Activity; } // extra insurance against misuse (if someone stashes away the execution context to use later) internal void Dispose() { this.isDisposed = true; this.instance = null; this.executor = null; this.Activity = null; } // Soft-Link: This method is referenced through reflection by // ExpressionUtilities.TryRewriteLambdaExpression. Update that // file if the signature changes. public Location GetLocation (LocationReference locationReference) { ThrowIfDisposed(); if (locationReference == null) { throw FxTrace.Exception.ArgumentNull("locationReference"); } Location location = locationReference.GetLocation(this); Location typedLocation = location as Location ; if (typedLocation != null) { return typedLocation; } else { Fx.Assert(location != null, "The contract of LocationReference is that GetLocation never returns null."); if (locationReference.Type == typeof(T)) { return new TypedLocationWrapper (location); } else { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.LocationTypeMismatch(locationReference.Name, typeof(T), locationReference.Type))); } } } // Soft-Link: This method is referenced through reflection by // ExpressionUtilities.TryRewriteLambdaExpression. Update that // file if the signature changes. public T GetValue (LocationReference locationReference) { ThrowIfDisposed(); if (locationReference == null) { throw FxTrace.Exception.ArgumentNull("locationReference"); } return GetValueCore (locationReference); } internal T GetValueCore (LocationReference locationReference) { Location location = locationReference.GetLocation(this); Location typedLocation = location as Location ; if (typedLocation != null) { // If we hit this path we can avoid boxing value types return typedLocation.Value; } else { Fx.Assert(location != null, "The contract of LocationReference is that GetLocation never returns null."); return TypeHelper.Convert (location.Value); } } public void SetValue (LocationReference locationReference, T value) { ThrowIfDisposed(); if (locationReference == null) { throw FxTrace.Exception.ArgumentNull("locationReference"); } SetValueCore (locationReference, value); } internal void SetValueCore (LocationReference locationReference, T value) { Location location = locationReference.GetLocation(this); Location typedLocation = location as Location ; if (typedLocation != null) { // If we hit this path we can avoid boxing value types typedLocation.Value = value; } else { if (!TypeHelper.AreTypesCompatible(value, locationReference.Type)) { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.CannotSetValueToLocation(value != null ? value.GetType() : typeof(T), locationReference.Name, locationReference.Type))); } location.Value = value; } } // Soft-Link: This method is referenced through reflection by // ExpressionUtilities.TryRewriteLambdaExpression. Update that // file if the signature changes. [SuppressMessage(FxCop.Category.Design, FxCop.Rule.ConsiderPassingBaseTypesAsParameters, Justification = "Generic needed for type inference")] public T GetValue (OutArgument argument) { ThrowIfDisposed(); if (argument == null) { throw FxTrace.Exception.ArgumentNull("argument"); } argument.ThrowIfNotInTree(); return GetValueCore (argument.RuntimeArgument); } // Soft-Link: This method is referenced through reflection by // ExpressionUtilities.TryRewriteLambdaExpression. Update that // file if the signature changes. [SuppressMessage(FxCop.Category.Design, FxCop.Rule.ConsiderPassingBaseTypesAsParameters, Justification = "Generic needed for type inference")] public T GetValue (InOutArgument argument) { ThrowIfDisposed(); if (argument == null) { throw FxTrace.Exception.ArgumentNull("argument"); } argument.ThrowIfNotInTree(); return GetValueCore (argument.RuntimeArgument); } // Soft-Link: This method is referenced through reflection by // ExpressionUtilities.TryRewriteLambdaExpression. Update that // file if the signature changes. [SuppressMessage(FxCop.Category.Design, FxCop.Rule.ConsiderPassingBaseTypesAsParameters, Justification = "Generic needed for type inference")] public T GetValue (InArgument argument) { ThrowIfDisposed(); if (argument == null) { throw FxTrace.Exception.ArgumentNull("argument"); } argument.ThrowIfNotInTree(); return GetValueCore (argument.RuntimeArgument); } // Soft-Link: This method is referenced through reflection by // ExpressionUtilities.TryRewriteLambdaExpression. Update that // file if the signature changes. public object GetValue(Argument argument) { ThrowIfDisposed(); if (argument == null) { throw FxTrace.Exception.ArgumentNull("argument"); } argument.ThrowIfNotInTree(); return GetValueCore
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InvalidEnumArgumentException.cs
- GenericEnumerator.cs
- SamlAttributeStatement.cs
- EntityCommandExecutionException.cs
- MergePropertyDescriptor.cs
- DataKey.cs
- CompiledRegexRunner.cs
- TypeSystemProvider.cs
- ElasticEase.cs
- RSACryptoServiceProvider.cs
- ReflectionTypeLoadException.cs
- ClientBuildManager.cs
- RuntimeArgumentHandle.cs
- QilName.cs
- HtmlFormAdapter.cs
- CreateUserErrorEventArgs.cs
- ImageSourceValueSerializer.cs
- TransportManager.cs
- StringUtil.cs
- ErrorWrapper.cs
- XamlWriter.cs
- FixedPosition.cs
- Comparer.cs
- RayHitTestParameters.cs
- SortExpressionBuilder.cs
- ListDictionary.cs
- SQLStringStorage.cs
- Int32KeyFrameCollection.cs
- RadialGradientBrush.cs
- SourceFileBuildProvider.cs
- TreeSet.cs
- GlobalAclOperationRequirement.cs
- TableLayoutPanel.cs
- PolicyUtility.cs
- ParameterCollectionEditor.cs
- DataSourceSerializationException.cs
- PixelShader.cs
- SeekableMessageNavigator.cs
- GridViewColumnHeaderAutomationPeer.cs
- ButtonStandardAdapter.cs
- ScriptResourceAttribute.cs
- CurrencyManager.cs
- HtmlUtf8RawTextWriter.cs
- OutOfProcStateClientManager.cs
- Int32CAMarshaler.cs
- AlphabeticalEnumConverter.cs
- MsmqIntegrationChannelFactory.cs
- ComponentManagerBroker.cs
- EDesignUtil.cs
- ProcessInfo.cs
- SerializationUtility.cs
- XmlCharCheckingReader.cs
- WindowsGraphics.cs
- RegexCapture.cs
- AbandonedMutexException.cs
- ISAPIWorkerRequest.cs
- ResourcesBuildProvider.cs
- ToolStripContainer.cs
- DbConnectionPoolOptions.cs
- DragEventArgs.cs
- SqlTypeConverter.cs
- WebSysDisplayNameAttribute.cs
- NameTable.cs
- AcceptorSessionSymmetricTransportSecurityProtocol.cs
- _NetRes.cs
- MessageHeaderAttribute.cs
- FixedSOMSemanticBox.cs
- Console.cs
- QilNode.cs
- RNGCryptoServiceProvider.cs
- WsdlParser.cs
- PageAsyncTaskManager.cs
- Expression.cs
- httpapplicationstate.cs
- Interfaces.cs
- AbandonedMutexException.cs
- DependencyObjectPropertyDescriptor.cs
- SamlSubject.cs
- PropertyPathWorker.cs
- ScalarConstant.cs
- EventDriven.cs
- WindowsRichEditRange.cs
- SelectionHighlightInfo.cs
- PartialTrustVisibleAssembly.cs
- MSAAWinEventWrap.cs
- Html32TextWriter.cs
- wgx_render.cs
- _NTAuthentication.cs
- TrustManagerPromptUI.cs
- SqlGenericUtil.cs
- PrimaryKeyTypeConverter.cs
- DataGridViewRowEventArgs.cs
- UInt32.cs
- WebPartConnectionsDisconnectVerb.cs
- GridErrorDlg.cs
- MdiWindowListItemConverter.cs
- ObjectDataSourceFilteringEventArgs.cs
- UserControlCodeDomTreeGenerator.cs
- IndexedGlyphRun.cs
- TraceSection.cs