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
- CommonDialog.cs
- FixedHyperLink.cs
- TextMetrics.cs
- RuleSetCollection.cs
- WebRequestModulesSection.cs
- OdbcDataAdapter.cs
- HijriCalendar.cs
- TextEditorTyping.cs
- DataGridPageChangedEventArgs.cs
- Soap12ProtocolImporter.cs
- ScrollBarAutomationPeer.cs
- LifetimeServices.cs
- GridViewDesigner.cs
- BuiltInPermissionSets.cs
- safex509handles.cs
- Rules.cs
- SelectionEditor.cs
- WebPartPersonalization.cs
- ConnectionInterfaceCollection.cs
- TypeSystemProvider.cs
- PeerPresenceInfo.cs
- Single.cs
- DbProviderFactoriesConfigurationHandler.cs
- FontDialog.cs
- FormatStringEditor.cs
- Expressions.cs
- CollectionBuilder.cs
- Internal.cs
- XmlDataSourceNodeDescriptor.cs
- ClassData.cs
- TranslateTransform3D.cs
- ColumnClickEvent.cs
- SubqueryRules.cs
- SortQuery.cs
- DataSourceNameHandler.cs
- FontClient.cs
- Accessible.cs
- DataGridColumn.cs
- OdbcHandle.cs
- PriorityQueue.cs
- UnwrappedTypesXmlSerializerManager.cs
- TableProviderWrapper.cs
- XmlSerializationWriter.cs
- ByteAnimationUsingKeyFrames.cs
- XmlDomTextWriter.cs
- EditingMode.cs
- CodeDomDesignerLoader.cs
- MethodBuilder.cs
- DataService.cs
- OdbcConnectionStringbuilder.cs
- InvalidComObjectException.cs
- ConstraintManager.cs
- AnimationException.cs
- SoapExtensionTypeElementCollection.cs
- FtpWebRequest.cs
- processwaithandle.cs
- HttpPostedFileBase.cs
- TransactionsSectionGroup.cs
- DebugInfoGenerator.cs
- FileRegion.cs
- EventLogLink.cs
- NumberFunctions.cs
- FormsAuthenticationUser.cs
- TreeViewEvent.cs
- UniqueIdentifierService.cs
- Overlapped.cs
- MatrixTransform.cs
- TableLayoutStyleCollection.cs
- DictionaryKeyPropertyAttribute.cs
- URLBuilder.cs
- AppliedDeviceFiltersEditor.cs
- DiscoveryRequestHandler.cs
- MobileTemplatedControlDesigner.cs
- TraceFilter.cs
- WindowsListViewGroupHelper.cs
- StylusLogic.cs
- MediaContextNotificationWindow.cs
- CatalogPart.cs
- BindableTemplateBuilder.cs
- HttpDictionary.cs
- PolyBezierSegment.cs
- EntityTypeEmitter.cs
- PointKeyFrameCollection.cs
- _BaseOverlappedAsyncResult.cs
- ProgressBar.cs
- MSAANativeProvider.cs
- HuffModule.cs
- TypePresenter.xaml.cs
- EdmError.cs
- ServiceNameCollection.cs
- MSAANativeProvider.cs
- WizardSideBarListControlItemEventArgs.cs
- SessionViewState.cs
- RichTextBoxAutomationPeer.cs
- NameSpaceExtractor.cs
- PenThread.cs
- CheckBoxRenderer.cs
- DefaultProxySection.cs
- ReliableMessagingVersionConverter.cs
- WhitespaceRule.cs