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
- BitmapEffectDrawingContextState.cs
- CaseDesigner.xaml.cs
- PropertyFilter.cs
- CertificateManager.cs
- SystemIcmpV6Statistics.cs
- BinarySecretKeyIdentifierClause.cs
- WebResourceUtil.cs
- PromptBuilder.cs
- AssemblyCache.cs
- AlphaSortedEnumConverter.cs
- PerformanceCounterPermissionEntry.cs
- DataGridView.cs
- Empty.cs
- SwitchAttribute.cs
- ArrayConverter.cs
- EmptyCollection.cs
- FixedStringLookup.cs
- ReferenceAssemblyAttribute.cs
- HwndStylusInputProvider.cs
- MILUtilities.cs
- HttpResponseInternalWrapper.cs
- ReaderContextStackData.cs
- UserControl.cs
- WebHeaderCollection.cs
- _HTTPDateParse.cs
- SimpleBitVector32.cs
- SqlClientWrapperSmiStreamChars.cs
- XamlBuildTaskServices.cs
- EmptyElement.cs
- GroupByQueryOperator.cs
- RequestCache.cs
- ColumnTypeConverter.cs
- UIElement.cs
- WebBrowserNavigatedEventHandler.cs
- PackageDigitalSignatureManager.cs
- XmlHierarchicalDataSourceView.cs
- DesignSurfaceServiceContainer.cs
- glyphs.cs
- Msmq4PoisonHandler.cs
- SystemException.cs
- SynchronizationHandlesCodeDomSerializer.cs
- BaseCodeDomTreeGenerator.cs
- Itemizer.cs
- DocumentSequence.cs
- SolidBrush.cs
- TransformerInfoCollection.cs
- DataControlFieldHeaderCell.cs
- TextDecorationUnitValidation.cs
- Span.cs
- BitHelper.cs
- PageParserFilter.cs
- DropTarget.cs
- WebScriptServiceHost.cs
- BitSet.cs
- TraceLevelHelper.cs
- XmlConvert.cs
- MatrixUtil.cs
- ValueUnavailableException.cs
- ObjectView.cs
- Codec.cs
- XmlCustomFormatter.cs
- XmlDocumentFragment.cs
- VBCodeProvider.cs
- ColumnWidthChangedEvent.cs
- RefType.cs
- AnimatedTypeHelpers.cs
- ColumnWidthChangingEvent.cs
- CoTaskMemSafeHandle.cs
- BinaryFormatter.cs
- SQLUtility.cs
- ExternalCalls.cs
- EdmItemCollection.cs
- MsdtcWrapper.cs
- CompModSwitches.cs
- followingsibling.cs
- FixedSOMLineRanges.cs
- FontNameEditor.cs
- ReferencedAssembly.cs
- WindowsSolidBrush.cs
- ConstraintStruct.cs
- ClientApiGenerator.cs
- SynchronizedDisposablePool.cs
- Rfc2898DeriveBytes.cs
- DataGridViewRowCollection.cs
- XmlExpressionDumper.cs
- WebBrowserEvent.cs
- Int64Converter.cs
- OleDbConnectionFactory.cs
- UnmanagedMarshal.cs
- PathParser.cs
- dsa.cs
- CacheMemory.cs
- QueueProcessor.cs
- EventItfInfo.cs
- HelpKeywordAttribute.cs
- FragmentNavigationEventArgs.cs
- RunInstallerAttribute.cs
- OleDbParameterCollection.cs
- MethodSet.cs
- FieldMetadata.cs