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
- DateTimeParse.cs
- BinaryFormatterWriter.cs
- EncoderFallback.cs
- ProviderConnectionPointCollection.cs
- WorkflowIdleBehavior.cs
- OdbcTransaction.cs
- PenContext.cs
- MimePart.cs
- XmlHierarchicalDataSourceView.cs
- WebPartDisplayModeCancelEventArgs.cs
- NameValuePermission.cs
- TextSelectionHelper.cs
- AutomationPattern.cs
- CalloutQueueItem.cs
- CatalogZoneBase.cs
- BamlLocalizabilityResolver.cs
- WeakEventTable.cs
- TypeSystemProvider.cs
- NotifyParentPropertyAttribute.cs
- SqlClientFactory.cs
- SuppressMergeCheckAttribute.cs
- SiteMapDataSourceView.cs
- StoryFragments.cs
- DataListItemCollection.cs
- DataGridViewColumnEventArgs.cs
- Material.cs
- FileFormatException.cs
- SecUtil.cs
- MatrixAnimationBase.cs
- Italic.cs
- OptimalTextSource.cs
- SqlUtil.cs
- EventlogProvider.cs
- StylusDevice.cs
- MarkupWriter.cs
- SizeAnimation.cs
- CodeAttributeArgument.cs
- MetadataSerializer.cs
- ValidationRuleCollection.cs
- CodeGen.cs
- WebSysDescriptionAttribute.cs
- HostVisual.cs
- CompensationHandlingFilter.cs
- CollectionView.cs
- AssemblyNameProxy.cs
- UnmanagedMemoryStream.cs
- XmlBinaryWriterSession.cs
- ZipPackagePart.cs
- WebBrowserSiteBase.cs
- HttpResponseInternalWrapper.cs
- DataGridViewLinkColumn.cs
- ToolStripDropDownMenu.cs
- IndexerNameAttribute.cs
- SuppressIldasmAttribute.cs
- Control.cs
- EventProviderWriter.cs
- ArrayConverter.cs
- TemplateControlBuildProvider.cs
- CustomGrammar.cs
- ActivationService.cs
- HtmlElementEventArgs.cs
- ConversionValidationRule.cs
- TripleDES.cs
- DesignerDataTable.cs
- IntAverageAggregationOperator.cs
- mediaeventargs.cs
- WasHttpModulesInstallComponent.cs
- ArgumentValue.cs
- JapaneseLunisolarCalendar.cs
- LookupBindingPropertiesAttribute.cs
- Table.cs
- ObjectContext.cs
- TableLayoutSettings.cs
- DataGridViewDataConnection.cs
- ColumnCollection.cs
- PrePostDescendentsWalker.cs
- MarginsConverter.cs
- XmlSchemaSimpleContentExtension.cs
- ProfileSettingsCollection.cs
- CipherData.cs
- StylusPointDescription.cs
- Overlapped.cs
- FlowLayoutSettings.cs
- RowUpdatedEventArgs.cs
- ProtectedProviderSettings.cs
- WindowsImpersonationContext.cs
- ThrowHelper.cs
- Identity.cs
- Literal.cs
- Win32Native.cs
- CommandID.cs
- ErrorWebPart.cs
- SimpleFieldTemplateFactory.cs
- columnmapfactory.cs
- MouseOverProperty.cs
- WindowsRichEdit.cs
- ListSurrogate.cs
- StaticContext.cs
- PerformanceCountersElement.cs
- ByteStorage.cs