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
- HashMembershipCondition.cs
- WebRequestModuleElementCollection.cs
- BaseComponentEditor.cs
- EndpointAddressProcessor.cs
- SetStoryboardSpeedRatio.cs
- FormViewInsertedEventArgs.cs
- SeparatorAutomationPeer.cs
- InvokeWebServiceDesigner.cs
- DetailsViewUpdateEventArgs.cs
- PeerMaintainer.cs
- MetadataCacheItem.cs
- ByteRangeDownloader.cs
- ApplicationManager.cs
- Matrix3DValueSerializer.cs
- StrongNameMembershipCondition.cs
- WorkflowServiceOperationListItem.cs
- GeneralTransform2DTo3D.cs
- XmlSchemaInfo.cs
- WebCategoryAttribute.cs
- SqlBulkCopy.cs
- KnownBoxes.cs
- MemoryPressure.cs
- SqlDataSourceFilteringEventArgs.cs
- TileBrush.cs
- XmlNodeList.cs
- WindowsStatusBar.cs
- BuildProvider.cs
- _SpnDictionary.cs
- UnmanagedMarshal.cs
- IERequestCache.cs
- ResourceContainer.cs
- ContentPosition.cs
- TranslateTransform.cs
- WaitHandleCannotBeOpenedException.cs
- ValueTable.cs
- UserNameServiceElement.cs
- WaitHandleCannotBeOpenedException.cs
- MenuScrollingVisibilityConverter.cs
- CDSsyncETWBCLProvider.cs
- CommandBinding.cs
- shaperfactoryquerycacheentry.cs
- RectKeyFrameCollection.cs
- WebUtil.cs
- PropertyGridView.cs
- DataErrorValidationRule.cs
- DocComment.cs
- ConstraintStruct.cs
- EndpointDiscoveryElement.cs
- TerminateSequenceResponse.cs
- SamlSecurityTokenAuthenticator.cs
- ProcessModelSection.cs
- Identity.cs
- DataGridViewHeaderCell.cs
- Command.cs
- AssociationTypeEmitter.cs
- GZipDecoder.cs
- UnsafeNativeMethods.cs
- Bidi.cs
- OleDbEnumerator.cs
- mda.cs
- _NegoStream.cs
- SByte.cs
- GridViewSelectEventArgs.cs
- MediaContextNotificationWindow.cs
- MetricEntry.cs
- UidManager.cs
- ThaiBuddhistCalendar.cs
- XPathAncestorQuery.cs
- TreeNodeConverter.cs
- DataTrigger.cs
- MetadataPropertyvalue.cs
- PropertyEntry.cs
- SectionVisual.cs
- RuleSettings.cs
- NativeMethods.cs
- UiaCoreProviderApi.cs
- NameValuePair.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- HostingEnvironment.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- ProtocolsConfigurationHandler.cs
- _NtlmClient.cs
- TdsParserHelperClasses.cs
- PenThreadPool.cs
- TokenizerHelper.cs
- CheckBoxRenderer.cs
- ErrorFormatter.cs
- TypeConverterHelper.cs
- WFItemsToSpacerVisibility.cs
- IPAddress.cs
- SrgsOneOf.cs
- StylusLogic.cs
- WorkflowApplication.cs
- ToolTip.cs
- WorkflowEnvironment.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- PolicyException.cs
- XmlAtomicValue.cs
- SeverityFilter.cs
- UserControlCodeDomTreeGenerator.cs