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
- PropertyKey.cs
- ClientUtils.cs
- Rss20ItemFormatter.cs
- ComponentDispatcher.cs
- BindingList.cs
- ObjectDataSourceView.cs
- ListViewItem.cs
- DataServiceContext.cs
- DummyDataSource.cs
- ADMembershipUser.cs
- Invariant.cs
- TextRangeSerialization.cs
- ObjectResult.cs
- LightweightCodeGenerator.cs
- FacetDescription.cs
- ScrollData.cs
- TablePattern.cs
- Queue.cs
- ReadWriteControlDesigner.cs
- SequentialWorkflowHeaderFooter.cs
- DebuggerAttributes.cs
- DataGridViewCellValidatingEventArgs.cs
- _NtlmClient.cs
- EventLogPermissionAttribute.cs
- FilterQuery.cs
- VirtualPathProvider.cs
- XmlNullResolver.cs
- Win32.cs
- ConnectionInterfaceCollection.cs
- Converter.cs
- JsonWriterDelegator.cs
- DatePickerTextBox.cs
- _SSPISessionCache.cs
- DataGridViewTopRowAccessibleObject.cs
- RawStylusSystemGestureInputReport.cs
- SqlTypeConverter.cs
- ConfigXmlComment.cs
- SqlMethodCallConverter.cs
- SeekableReadStream.cs
- CompoundFileStreamReference.cs
- TextEditorMouse.cs
- ComponentDispatcherThread.cs
- NamedElement.cs
- DataGridViewElement.cs
- SelectedGridItemChangedEvent.cs
- SqlNode.cs
- ProcessingInstructionAction.cs
- CmsInterop.cs
- ColumnMapCopier.cs
- GridViewItemAutomationPeer.cs
- DataContext.cs
- OperationBehaviorAttribute.cs
- TreeIterator.cs
- _ShellExpression.cs
- SeekStoryboard.cs
- DecimalConstantAttribute.cs
- DecoderFallbackWithFailureFlag.cs
- DelegateInArgument.cs
- PtsContext.cs
- ConstraintConverter.cs
- MoveSizeWinEventHandler.cs
- SchemeSettingElement.cs
- LineSegment.cs
- TemplatedMailWebEventProvider.cs
- NativeMethods.cs
- NetDataContractSerializer.cs
- SQLUtility.cs
- SymbolTable.cs
- ChannelServices.cs
- PageAdapter.cs
- InternalTypeHelper.cs
- ThreadPool.cs
- EncoderParameter.cs
- XmlCollation.cs
- Trigger.cs
- WindowsGraphics2.cs
- GPStream.cs
- LoginView.cs
- Icon.cs
- AttributeExtensions.cs
- FileFormatException.cs
- SmiRecordBuffer.cs
- IntSecurity.cs
- ReflectEventDescriptor.cs
- OdbcCommand.cs
- ToolStripItemCollection.cs
- DataSetMappper.cs
- Pts.cs
- TemplateNameScope.cs
- AutomationPropertyInfo.cs
- AdapterDictionary.cs
- DataServiceConfiguration.cs
- DataGridPreparingCellForEditEventArgs.cs
- AnnotationAuthorChangedEventArgs.cs
- ObjectItemNoOpAssemblyLoader.cs
- ElementInit.cs
- DecimalKeyFrameCollection.cs
- BadImageFormatException.cs
- CorrelationResolver.cs
- _AuthenticationState.cs