Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / LambdaReference.cs / 1305376 / LambdaReference.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Expressions { using System; using System.Activities.ExpressionParser; using System.Activities.XamlIntegration; using System.Collections.Generic; using System.Linq.Expressions; using System.Runtime; using System.Windows.Markup; // consciously not XAML-friendly since Linq Expressions aren't create-set-use [Fx.Tag.XamlVisible(false)] public sealed class LambdaReference: CodeActivity >, IExpressionContainer, IValueSerializableExpression { Expression > locationExpression; Expression > rewrittenTree; LocationFactory locationFactory; public LambdaReference(Expression > locationExpression) { Fx.Assert(locationExpression != null, "locationExpression should not be null"); this.locationExpression = locationExpression; this.SkipArgumentResolution = true; } Expression IExpressionContainer.Expression { get { return this.locationExpression; } } protected override void CacheMetadata(CodeActivityMetadata metadata) { // We need to rewrite the tree. Expression newTree; if (ExpressionUtilities.TryRewriteLambdaExpression(this.locationExpression, out newTree, metadata)) { this.rewrittenTree = (Expression >)newTree; } else { this.rewrittenTree = this.locationExpression; } // inspect the expressionTree to see if it is a valid location expression(L-value) string extraErrorMessage = null; if (!ExpressionUtilities.IsLocation(this.rewrittenTree, typeof(T), out extraErrorMessage)) { string errorMessage = SR.InvalidLValueExpression; if (extraErrorMessage != null) { errorMessage += ":" + extraErrorMessage; } metadata.AddValidationError(errorMessage); } } internal override bool TryGetValue(ActivityContext context, out Location value) { if (this.locationFactory == null) { this.locationFactory = ExpressionUtilities.CreateLocationFactory (this.rewrittenTree); } value = this.locationFactory.CreateLocation(context); return true; } protected override Location Execute(CodeActivityContext context) { return ExecuteWithTryGetValue(context); } public bool CanConvertToString(IValueSerializerContext context) { return true; } public string ConvertToString(IValueSerializerContext context) { // This workflow contains lambda expressions specified in code. // These expressions are not XAML serializable. // In order to make your workflow XAML-serializable, // use either VisualBasicValue/Reference or ExpressionServices.Convert // This will convert your lambda expressions into expression activities. throw FxTrace.Exception.AsError(new LambdaSerializationException()); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ParserOptions.cs
- SqlVersion.cs
- NavigationPropertySingletonExpression.cs
- Int64AnimationBase.cs
- FtpCachePolicyElement.cs
- StateManagedCollection.cs
- RemotingConfiguration.cs
- WasHttpModulesInstallComponent.cs
- Security.cs
- SerializationUtilities.cs
- SqlWriter.cs
- CompositeScriptReference.cs
- WebPartConnectionsCloseVerb.cs
- TextParagraphView.cs
- CompositeScriptReferenceEventArgs.cs
- SqlUserDefinedTypeAttribute.cs
- QuaternionRotation3D.cs
- dbdatarecord.cs
- AspCompat.cs
- _OSSOCK.cs
- JournalEntryListConverter.cs
- StorageComplexTypeMapping.cs
- TabRenderer.cs
- HighContrastHelper.cs
- ClockController.cs
- ArgumentNullException.cs
- OdbcHandle.cs
- WindowsStatusBar.cs
- Substitution.cs
- HttpApplicationFactory.cs
- HotSpotCollection.cs
- ELinqQueryState.cs
- SelectedGridItemChangedEvent.cs
- SymLanguageType.cs
- TextTreeRootTextBlock.cs
- HashLookup.cs
- XmlAutoDetectWriter.cs
- DetailsViewUpdateEventArgs.cs
- FileDialog.cs
- SoapInteropTypes.cs
- ContentPosition.cs
- COSERVERINFO.cs
- BooleanToVisibilityConverter.cs
- TrackingDataItemValue.cs
- Stroke2.cs
- Brush.cs
- AssociationSetMetadata.cs
- FaultConverter.cs
- CompilerScopeManager.cs
- WebPartConnectionCollection.cs
- CallTemplateAction.cs
- DataGridViewCellStyleEditor.cs
- CodeStatement.cs
- NotSupportedException.cs
- MobilePage.cs
- FunctionGenerator.cs
- WindowsRebar.cs
- SiblingIterators.cs
- WebScriptMetadataMessage.cs
- Calendar.cs
- SqlGenericUtil.cs
- MetadataItem_Static.cs
- PartBasedPackageProperties.cs
- TypeDescriptionProvider.cs
- SmtpDigestAuthenticationModule.cs
- RemotingClientProxy.cs
- RuntimeTrackingProfile.cs
- Timer.cs
- ProfileGroupSettingsCollection.cs
- XmlMapping.cs
- TextFindEngine.cs
- PeerResolver.cs
- ContentElement.cs
- Models.cs
- ISCIIEncoding.cs
- OleDbParameterCollection.cs
- GuidelineSet.cs
- ConfigurationPermission.cs
- SqlDelegatedTransaction.cs
- ComponentResourceManager.cs
- TextRangeAdaptor.cs
- PkcsMisc.cs
- RegexParser.cs
- PeerEndPoint.cs
- Application.cs
- WindowsSlider.cs
- MemberInfoSerializationHolder.cs
- CodeDirectiveCollection.cs
- InvalidPrinterException.cs
- basenumberconverter.cs
- FunctionParameter.cs
- ClientSettingsStore.cs
- DataControlButton.cs
- MissingSatelliteAssemblyException.cs
- DataServiceHost.cs
- PeerTransportListenAddressValidator.cs
- CacheMemory.cs
- ConnectorRouter.cs
- ScriptDescriptor.cs
- dbenumerator.cs