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
- ConnectionsZone.cs
- SafeCancelMibChangeNotify.cs
- FileIOPermission.cs
- DataGridViewDataErrorEventArgs.cs
- ListenerPerfCounters.cs
- Transactions.cs
- OwnerDrawPropertyBag.cs
- Size3DConverter.cs
- CharConverter.cs
- CommandID.cs
- CharConverter.cs
- _KerberosClient.cs
- SoapBinding.cs
- Debug.cs
- StructuralCache.cs
- AnimationLayer.cs
- CurrencyWrapper.cs
- MenuBindingsEditorForm.cs
- ExpandButtonVisibilityConverter.cs
- UriExt.cs
- ModulesEntry.cs
- TextReader.cs
- WeakReferenceList.cs
- SourceInterpreter.cs
- ProfileParameter.cs
- ItemCheckedEvent.cs
- connectionpool.cs
- ExtractorMetadata.cs
- DynamicRendererThreadManager.cs
- Single.cs
- SendingRequestEventArgs.cs
- QueryConverter.cs
- InternalRelationshipCollection.cs
- LinearGradientBrush.cs
- HttpRequest.cs
- WebPartManagerDesigner.cs
- CollectionViewSource.cs
- CodeSubDirectoriesCollection.cs
- DropAnimation.xaml.cs
- XmlChoiceIdentifierAttribute.cs
- ToolStripRenderer.cs
- NativeMsmqMessage.cs
- Int32RectConverter.cs
- DataRecordInfo.cs
- GenericWebPart.cs
- DataGridTextBoxColumn.cs
- ByteStream.cs
- TextViewBase.cs
- GridItemPatternIdentifiers.cs
- UnsafeNativeMethods.cs
- HashHelper.cs
- ScrollChrome.cs
- PermissionListSet.cs
- GeometryGroup.cs
- InputDevice.cs
- SqlLiftIndependentRowExpressions.cs
- RuntimeConfig.cs
- DataGridColumnEventArgs.cs
- SpecialFolderEnumConverter.cs
- ExternalException.cs
- GeometryDrawing.cs
- ManagedWndProcTracker.cs
- XmlObjectSerializerWriteContextComplex.cs
- XmlTextAttribute.cs
- TrackBarRenderer.cs
- DataGridViewSelectedColumnCollection.cs
- HtmlForm.cs
- WorkflowFormatterBehavior.cs
- SetterBase.cs
- SafeSecurityHelper.cs
- safesecurityhelperavalon.cs
- Invariant.cs
- KnownIds.cs
- COM2ComponentEditor.cs
- UserControlCodeDomTreeGenerator.cs
- MdiWindowListStrip.cs
- SecurityTokenException.cs
- ExternalDataExchangeService.cs
- CompositeTypefaceMetrics.cs
- AddingNewEventArgs.cs
- CheckBoxStandardAdapter.cs
- XmlSchemaExporter.cs
- DesignerActionGlyph.cs
- SafeLibraryHandle.cs
- BitmapInitialize.cs
- TextLineResult.cs
- CodeFieldReferenceExpression.cs
- HtmlShim.cs
- CodeTypeParameter.cs
- XslCompiledTransform.cs
- TreeViewImageKeyConverter.cs
- OutputWindow.cs
- _SslSessionsCache.cs
- WebColorConverter.cs
- FontEmbeddingManager.cs
- IconConverter.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- ActionItem.cs
- OptimalBreakSession.cs
- TextBoxBase.cs