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
- DecoderFallback.cs
- AnnotationResource.cs
- DateTimeConverter2.cs
- ExtendedProperty.cs
- SqlBinder.cs
- MembershipUser.cs
- Condition.cs
- CoreSwitches.cs
- SchemaTypeEmitter.cs
- MethodCallTranslator.cs
- CodeGeneratorOptions.cs
- Light.cs
- FileDialog_Vista_Interop.cs
- Converter.cs
- XmlSchemaGroup.cs
- ObjectComplexPropertyMapping.cs
- SqlDelegatedTransaction.cs
- GenericTextProperties.cs
- SchemaConstraints.cs
- HtmlMeta.cs
- PlaceHolder.cs
- RouteParameter.cs
- BuiltInExpr.cs
- Single.cs
- CLRBindingWorker.cs
- SelectionHighlightInfo.cs
- EntityDataSourceSelectedEventArgs.cs
- MiniModule.cs
- EventLogException.cs
- FlowDocumentReader.cs
- documentsequencetextpointer.cs
- Action.cs
- COM2ExtendedBrowsingHandler.cs
- SuppressMergeCheckAttribute.cs
- QuaternionAnimationBase.cs
- DLinqTableProvider.cs
- Monitor.cs
- XmlTextWriter.cs
- StringArrayConverter.cs
- WebPart.cs
- ViewManager.cs
- FormatterConverter.cs
- Helper.cs
- UIAgentAsyncEndRequest.cs
- ImageMapEventArgs.cs
- Assert.cs
- FixedSOMTextRun.cs
- ProxyAttribute.cs
- TableHeaderCell.cs
- CompileXomlTask.cs
- SystemSounds.cs
- XmlComplianceUtil.cs
- ReadOnlyDictionary.cs
- XmlQueryRuntime.cs
- SqlDataSourceCommandEventArgs.cs
- XomlDesignerLoader.cs
- Size.cs
- RuntimeConfigurationRecord.cs
- CopyCodeAction.cs
- RegexCapture.cs
- BaseInfoTable.cs
- TrackingRecord.cs
- UnaryExpressionHelper.cs
- ConnectionPointCookie.cs
- ColumnBinding.cs
- XmlDataSourceNodeDescriptor.cs
- HierarchicalDataSourceIDConverter.cs
- ArgumentNullException.cs
- OperationCanceledException.cs
- ParallelTimeline.cs
- __ComObject.cs
- QilTargetType.cs
- Exceptions.cs
- ResXResourceSet.cs
- cookie.cs
- TextEndOfSegment.cs
- Win32.cs
- ExceptionAggregator.cs
- UnionExpr.cs
- Int64AnimationUsingKeyFrames.cs
- FixedSOMLineCollection.cs
- RoutedEventConverter.cs
- RegexReplacement.cs
- Crypto.cs
- ConfigurationConverterBase.cs
- InternalBase.cs
- HttpVersion.cs
- FileChangeNotifier.cs
- DataGridColumnDropSeparator.cs
- PatternMatcher.cs
- BindingListCollectionView.cs
- CompilerCollection.cs
- AdCreatedEventArgs.cs
- SqlIdentifier.cs
- FlowLayoutPanel.cs
- ComplexPropertyEntry.cs
- UnmanagedHandle.cs
- AssemblyFilter.cs
- ColumnResizeUndoUnit.cs
- CachingHintValidation.cs