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
- DocumentApplicationJournalEntry.cs
- TextRunProperties.cs
- QueryOptionExpression.cs
- PtsHost.cs
- DateTimeOffsetStorage.cs
- Font.cs
- CodeSnippetTypeMember.cs
- WebPartDisplayModeEventArgs.cs
- Internal.cs
- DataServiceProviderMethods.cs
- _HelperAsyncResults.cs
- LinearGradientBrush.cs
- MetaModel.cs
- TypefaceCollection.cs
- ColorConvertedBitmap.cs
- ChannelToken.cs
- BrowserCapabilitiesFactoryBase.cs
- DefaultProxySection.cs
- PlaceHolder.cs
- RawStylusInput.cs
- DataSourceConverter.cs
- SecurityUtils.cs
- ThrowHelper.cs
- QilCloneVisitor.cs
- DependsOnAttribute.cs
- HtmlTableRowCollection.cs
- GridView.cs
- NonBatchDirectoryCompiler.cs
- NTAccount.cs
- XmlAttributes.cs
- TrustManager.cs
- RIPEMD160Managed.cs
- DelegatedStream.cs
- HtmlHead.cs
- UnaryExpressionHelper.cs
- CultureSpecificCharacterBufferRange.cs
- DbDataSourceEnumerator.cs
- Border.cs
- StdValidatorsAndConverters.cs
- LiteralLink.cs
- HttpClientCertificate.cs
- ObjectMemberMapping.cs
- SqlWorkflowPersistenceService.cs
- SamlEvidence.cs
- TextBox.cs
- _RequestCacheProtocol.cs
- InternalsVisibleToAttribute.cs
- ObjectQueryProvider.cs
- CompileLiteralTextParser.cs
- SessionKeyExpiredException.cs
- ExeConfigurationFileMap.cs
- UIElement.cs
- Signature.cs
- Normalizer.cs
- TagNameToTypeMapper.cs
- StringAttributeCollection.cs
- RectAnimation.cs
- VoiceChangeEventArgs.cs
- DataContractSerializerMessageContractImporter.cs
- XmlSignatureManifest.cs
- ApplicationSettingsBase.cs
- ListItemCollection.cs
- Internal.cs
- ResetableIterator.cs
- GeneralTransform3DCollection.cs
- SelectManyQueryOperator.cs
- EventProxy.cs
- MetadataFile.cs
- EarlyBoundInfo.cs
- AdornerHitTestResult.cs
- GraphicsContainer.cs
- CreateParams.cs
- Latin1Encoding.cs
- EventListener.cs
- AssemblyFilter.cs
- BaseTemplateBuildProvider.cs
- ToolStripSystemRenderer.cs
- SharingService.cs
- XmlSerializerSection.cs
- IdnMapping.cs
- VariableAction.cs
- Signature.cs
- ExpressionBinding.cs
- ValidationRuleCollection.cs
- EdmSchemaAttribute.cs
- XsltOutput.cs
- RootBuilder.cs
- SerializerDescriptor.cs
- GeometryModel3D.cs
- BrowsableAttribute.cs
- ResolveNameEventArgs.cs
- HiddenField.cs
- ShapeTypeface.cs
- RequestValidator.cs
- FillBehavior.cs
- ExpressionBinding.cs
- AsyncWaitHandle.cs
- TextRangeSerialization.cs
- StateWorkerRequest.cs
- PackageRelationshipSelector.cs