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
- ControlIdConverter.cs
- XmlSchemaProviderAttribute.cs
- StoreContentChangedEventArgs.cs
- FileRecordSequenceCompletedAsyncResult.cs
- LocationUpdates.cs
- KnownTypesProvider.cs
- DesignerLinkAdapter.cs
- WebPartConnectionsCancelEventArgs.cs
- LinqDataSourceStatusEventArgs.cs
- XmlConverter.cs
- SurrogateDataContract.cs
- SQLBytesStorage.cs
- ColorConvertedBitmap.cs
- XmlSchemaImporter.cs
- TaiwanLunisolarCalendar.cs
- ImageSource.cs
- DataGridViewRow.cs
- XmlLoader.cs
- SqlResolver.cs
- ToggleButton.cs
- SqlClientMetaDataCollectionNames.cs
- BinaryReader.cs
- SoapSchemaExporter.cs
- DateTimeUtil.cs
- TableRowCollection.cs
- AccessorTable.cs
- DataStorage.cs
- BindingParameterCollection.cs
- ValidationErrorEventArgs.cs
- HebrewNumber.cs
- TextViewDesigner.cs
- infer.cs
- WindowInteractionStateTracker.cs
- UnmanagedMarshal.cs
- MethodAccessException.cs
- Condition.cs
- NativeMethods.cs
- AsyncOperation.cs
- SessionStateSection.cs
- DynamicRenderer.cs
- RangeValidator.cs
- CustomAttributeFormatException.cs
- LoginAutoFormat.cs
- ComponentChangedEvent.cs
- TargetParameterCountException.cs
- ToolStripRenderEventArgs.cs
- SymmetricSecurityBindingElement.cs
- DynamicFilter.cs
- RuntimeArgumentHandle.cs
- HistoryEventArgs.cs
- ReflectionUtil.cs
- Timer.cs
- DBSchemaTable.cs
- Confirm.cs
- IPGlobalProperties.cs
- Propagator.cs
- CodeDirectionExpression.cs
- ItemAutomationPeer.cs
- ServiceModelDictionary.cs
- CodeGen.cs
- XmlSchemaChoice.cs
- LoadMessageLogger.cs
- FormViewDeletedEventArgs.cs
- HttpValueCollection.cs
- MimeFormImporter.cs
- listitem.cs
- EntityConnectionStringBuilder.cs
- OdbcEnvironment.cs
- _DisconnectOverlappedAsyncResult.cs
- OdbcConnectionOpen.cs
- ConnectionManagementElementCollection.cs
- WSSecureConversationFeb2005.cs
- CodeSnippetStatement.cs
- X509Certificate2Collection.cs
- StructuredTypeInfo.cs
- WebPartsPersonalizationAuthorization.cs
- HorizontalAlignConverter.cs
- PenThreadWorker.cs
- TextBoxBase.cs
- OneToOneMappingSerializer.cs
- LineUtil.cs
- FillErrorEventArgs.cs
- PackageDigitalSignatureManager.cs
- ApplicationProxyInternal.cs
- ToolStripPanelRenderEventArgs.cs
- DataGridViewSelectedColumnCollection.cs
- TreeNodeBinding.cs
- FormattedText.cs
- SettingsPropertyWrongTypeException.cs
- Object.cs
- HelpFileFileNameEditor.cs
- OrderedEnumerableRowCollection.cs
- WebBrowser.cs
- Connector.cs
- Bold.cs
- TableLayoutPanelCellPosition.cs
- EndPoint.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- XmlRawWriterWrapper.cs
- Latin1Encoding.cs