Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / MemberExpressionHelper.cs / 1305376 / MemberExpressionHelper.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Expressions { using System.Activities.Statements; using System.Collections.Generic; using System.Linq.Expressions; using System.Reflection; using System.Runtime; using System.Collections.ObjectModel; using System.Activities.Validation; static class MemberExpressionHelper { public static void AddOperandArgument(CodeActivityMetadata metadata, InArgument operand, bool isRequired) { RuntimeArgument operandArgument = new RuntimeArgument("Operand", typeof(TOperand), ArgumentDirection.In, isRequired); metadata.Bind(operand, operandArgument); metadata.AddArgument(operandArgument); } public static void AddOperandLocationArgument (CodeActivityMetadata metadata, InOutArgument operandLocation, bool isRequired) { RuntimeArgument operandLocationArgument = new RuntimeArgument("OperandLocation", typeof(TOperand), ArgumentDirection.InOut, isRequired); metadata.Bind(operandLocation, operandLocationArgument); metadata.AddArgument(operandLocationArgument); } public static bool TryGenerateLinqDelegate (string memberName, bool isField, bool isStatic, out Func operation, out ValidationError validationError) { operation = null; validationError = null; try { ParameterExpression operandParameter = Expression.Parameter(typeof(TOperand), "operand"); MemberExpression memberExpression = null; if (isStatic) { memberExpression = Expression.MakeMemberAccess(null, GetMemberInfo (memberName, isField)); } else { memberExpression = Expression.MakeMemberAccess(operandParameter, GetMemberInfo (memberName, isField)); } Expression > lambdaExpression = Expression.Lambda >(memberExpression, operandParameter); operation = lambdaExpression.Compile(); return true; } catch (Exception e) { if (Fx.IsFatal(e)) { throw; } validationError = new ValidationError(e.Message); return false; } } static MemberInfo GetMemberInfo (string memberName, bool isField) { MemberInfo result = null; Type declaringType = typeof(TOperand); if (!isField) { result = declaringType.GetProperty(memberName); } else { result = declaringType.GetField(memberName); } if (result == null) { throw FxTrace.Exception.AsError(new ValidationException(SR.MemberNotFound(memberName, typeof(TOperand).Name))); } return result; } } } // 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
- XamlWriter.cs
- PageBuildProvider.cs
- InputLanguageSource.cs
- GroupBoxRenderer.cs
- TextTrailingCharacterEllipsis.cs
- CollectionChangeEventArgs.cs
- TextRunCache.cs
- TextRangeEditLists.cs
- RegexRunnerFactory.cs
- ToggleButtonAutomationPeer.cs
- NamedPipeConnectionPoolSettings.cs
- XsdBuilder.cs
- GlyphingCache.cs
- DesignerCalendarAdapter.cs
- Triplet.cs
- RichTextBoxConstants.cs
- ManifestBasedResourceGroveler.cs
- DrawingContextDrawingContextWalker.cs
- NumericUpDownAccelerationCollection.cs
- TextRunCache.cs
- IdentifierCollection.cs
- InstallerTypeAttribute.cs
- Semaphore.cs
- AnonymousIdentificationModule.cs
- MatrixIndependentAnimationStorage.cs
- PageTheme.cs
- CompositeFontInfo.cs
- ApplicationFileCodeDomTreeGenerator.cs
- CharacterString.cs
- DataGridViewImageCell.cs
- KeyboardNavigation.cs
- DatatypeImplementation.cs
- BooleanProjectedSlot.cs
- _AuthenticationState.cs
- SqlDataSourceView.cs
- ScalarOps.cs
- FullTextBreakpoint.cs
- WebBaseEventKeyComparer.cs
- PageAsyncTask.cs
- CommunicationObject.cs
- CollectionAdapters.cs
- MultiView.cs
- BindingManagerDataErrorEventArgs.cs
- IPHostEntry.cs
- AddInBase.cs
- FieldNameLookup.cs
- WebBrowserContainer.cs
- XsdValidatingReader.cs
- ToolStripDropDownClosingEventArgs.cs
- FlowDocument.cs
- DataGridClipboardHelper.cs
- DataGridCell.cs
- PointAnimationUsingKeyFrames.cs
- _ConnectStream.cs
- BitmapEffect.cs
- _FixedSizeReader.cs
- ToolStripContentPanel.cs
- Misc.cs
- Classification.cs
- MsmqHostedTransportManager.cs
- DefaultProxySection.cs
- CheckBoxAutomationPeer.cs
- XmlKeywords.cs
- ContainerTracking.cs
- DateTimeFormatInfoScanner.cs
- ArgumentDesigner.xaml.cs
- PromptBuilder.cs
- EndOfStreamException.cs
- XmlNode.cs
- LockedActivityGlyph.cs
- DiagnosticsConfiguration.cs
- IdentitySection.cs
- XmlSchemaFacet.cs
- OracleCommand.cs
- SQLString.cs
- SizeAnimationBase.cs
- ManagedCodeMarkers.cs
- EditorZone.cs
- InputMethodStateChangeEventArgs.cs
- RemoteWebConfigurationHostServer.cs
- ListManagerBindingsCollection.cs
- ValidationPropertyAttribute.cs
- XmlSchemaComplexContentExtension.cs
- WebConfigurationManager.cs
- SafeCertificateContext.cs
- XmlDataCollection.cs
- DLinqTableProvider.cs
- ArrayItemReference.cs
- TypeElement.cs
- XmlNamespaceManager.cs
- AuthorizationRuleCollection.cs
- NativeMethods.cs
- WebHeaderCollection.cs
- PaperSource.cs
- StylusPointCollection.cs
- UrlAuthorizationModule.cs
- HttpRawResponse.cs
- SettingsPropertyIsReadOnlyException.cs
- SecuritySessionFilter.cs
- AnnouncementService.cs