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
- CompilationPass2TaskInternal.cs
- XmlArrayItemAttribute.cs
- CorrelationTokenTypeConvertor.cs
- CrossAppDomainChannel.cs
- SuppressMessageAttribute.cs
- KnownBoxes.cs
- CookieParameter.cs
- DiscoveryDocument.cs
- TokenFactoryCredential.cs
- TypeExtension.cs
- ToolStripRendererSwitcher.cs
- XmlSerializerSection.cs
- CodeExpressionStatement.cs
- ClientProxyGenerator.cs
- BlobPersonalizationState.cs
- DynamicValueConverter.cs
- DataGridHeaderBorder.cs
- RIPEMD160.cs
- UserControlCodeDomTreeGenerator.cs
- DesignerActionService.cs
- DictionaryContent.cs
- BatchServiceHost.cs
- BitVector32.cs
- _TransmitFileOverlappedAsyncResult.cs
- BufferedGraphicsManager.cs
- CodeGeneratorOptions.cs
- securitymgrsite.cs
- IsolatedStorageException.cs
- DeploymentSection.cs
- TreePrinter.cs
- OleDbTransaction.cs
- ReadOnlyHierarchicalDataSource.cs
- WindowsToolbarAsMenu.cs
- FocusChangedEventArgs.cs
- Semaphore.cs
- InnerItemCollectionView.cs
- MouseCaptureWithinProperty.cs
- ThrowHelper.cs
- DnsElement.cs
- ButtonBase.cs
- EntityDesignerUtils.cs
- FlowDocumentReader.cs
- JapaneseCalendar.cs
- ImpersonateTokenRef.cs
- LabelDesigner.cs
- ValidationRule.cs
- BrowserDefinitionCollection.cs
- NativeMethods.cs
- ProvidersHelper.cs
- BitmapEffectDrawingContextState.cs
- Converter.cs
- SafeHandles.cs
- User.cs
- ScriptReference.cs
- ResourceBinder.cs
- ObjectTag.cs
- ADConnectionHelper.cs
- OrderedEnumerableRowCollection.cs
- TrackingServices.cs
- LicenseException.cs
- XmlConverter.cs
- DataGridViewRowEventArgs.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- XamlDesignerSerializationManager.cs
- _NestedSingleAsyncResult.cs
- XslNumber.cs
- SafeViewOfFileHandle.cs
- IItemContainerGenerator.cs
- RubberbandSelector.cs
- ListViewItem.cs
- MenuAutomationPeer.cs
- XmlException.cs
- RolePrincipal.cs
- DateTimeConverter.cs
- Events.cs
- ComboBoxRenderer.cs
- UrlAuthFailedErrorFormatter.cs
- UriSection.cs
- FontEmbeddingManager.cs
- FrameSecurityDescriptor.cs
- Tool.cs
- PersonalizationAdministration.cs
- CharConverter.cs
- TreeNode.cs
- TemplateColumn.cs
- RepeatButtonAutomationPeer.cs
- ValidateNames.cs
- PointLightBase.cs
- ScriptReference.cs
- NamedPermissionSet.cs
- XmlHierarchicalDataSourceView.cs
- Collection.cs
- FixedSOMPage.cs
- EncryptedXml.cs
- BufferModeSettings.cs
- ConsoleTraceListener.cs
- WebConfigurationHost.cs
- BamlRecordHelper.cs
- TdsParserStateObject.cs
- Rule.cs