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
- AddingNewEventArgs.cs
- HtmlInputButton.cs
- Typography.cs
- ListViewItemMouseHoverEvent.cs
- PageRanges.cs
- RecognizedWordUnit.cs
- EdmTypeAttribute.cs
- Icon.cs
- CopyOnWriteList.cs
- Cloud.cs
- MobileSysDescriptionAttribute.cs
- TemplateBamlRecordReader.cs
- RuntimeConfigLKG.cs
- WhitespaceReader.cs
- TrackingExtract.cs
- XmlExtensionFunction.cs
- ObjectStorage.cs
- FormViewPagerRow.cs
- CheckBoxField.cs
- DataGridRowsPresenter.cs
- EdmProperty.cs
- SystemIPInterfaceProperties.cs
- ProtocolsSection.cs
- TaskHelper.cs
- InvalidateEvent.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- StylusCaptureWithinProperty.cs
- Token.cs
- WindowsToolbarAsMenu.cs
- TextBoxBase.cs
- XmlDownloadManager.cs
- Evaluator.cs
- FilterFactory.cs
- InitializationEventAttribute.cs
- Wrapper.cs
- xdrvalidator.cs
- Fx.cs
- AppDomainUnloadedException.cs
- XmlMemberMapping.cs
- FrameworkContentElement.cs
- ComponentDispatcher.cs
- GlobalAllocSafeHandle.cs
- TextControl.cs
- WindowsFormsHelpers.cs
- x509store.cs
- AsmxEndpointPickerExtension.cs
- TrackBarRenderer.cs
- OuterGlowBitmapEffect.cs
- BoundPropertyEntry.cs
- CodeChecksumPragma.cs
- TraceSource.cs
- RootBrowserWindow.cs
- SoapSchemaMember.cs
- TreeViewItem.cs
- AppDomainShutdownMonitor.cs
- RootProfilePropertySettingsCollection.cs
- AgileSafeNativeMemoryHandle.cs
- DbReferenceCollection.cs
- WebScriptMetadataMessageEncoderFactory.cs
- WebBrowserEvent.cs
- SmtpNetworkElement.cs
- XmlDataDocument.cs
- SimpleModelProvider.cs
- SourceFileBuildProvider.cs
- WmpBitmapEncoder.cs
- SQLSingleStorage.cs
- MouseCaptureWithinProperty.cs
- TagPrefixCollection.cs
- OptionalMessageQuery.cs
- Debug.cs
- ChangeProcessor.cs
- WorkflowServiceHost.cs
- XmlQueryType.cs
- WebBrowserHelper.cs
- VectorCollection.cs
- Mapping.cs
- CodeExporter.cs
- PagesChangedEventArgs.cs
- ToolZone.cs
- PageContentCollection.cs
- ContentWrapperAttribute.cs
- FunctionParameter.cs
- ComboBoxAutomationPeer.cs
- ListItemConverter.cs
- Socket.cs
- SudsCommon.cs
- ProxyWebPart.cs
- KnownColorTable.cs
- NavigationExpr.cs
- Executor.cs
- SspiHelper.cs
- XmlSchemaType.cs
- TrackingWorkflowEventArgs.cs
- ConfigDefinitionUpdates.cs
- SocketException.cs
- InstanceDataCollection.cs
- DataTableMappingCollection.cs
- DateTimeValueSerializerContext.cs
- ContextMenuStrip.cs
- Application.cs