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
- EUCJPEncoding.cs
- InternalMappingException.cs
- StandardRuntimeEnumValidator.cs
- DocumentNUp.cs
- SchemaType.cs
- RightsManagementInformation.cs
- XmlWrappingReader.cs
- PolicyManager.cs
- SspiSafeHandles.cs
- DockPatternIdentifiers.cs
- ToolStripDropDownButton.cs
- Triplet.cs
- mongolianshape.cs
- WebZone.cs
- MimeTypePropertyAttribute.cs
- WebMessageEncodingElement.cs
- CodeBlockBuilder.cs
- ContentType.cs
- TagMapCollection.cs
- ServiceDocumentFormatter.cs
- DesignerUtility.cs
- RowUpdatingEventArgs.cs
- BaseDataList.cs
- BitmapEffect.cs
- IfAction.cs
- FixedSOMTable.cs
- CustomErrorsSectionWrapper.cs
- Scene3D.cs
- Boolean.cs
- DataGridColumnCollectionEditor.cs
- TextBlockAutomationPeer.cs
- DoubleAnimationUsingKeyFrames.cs
- CheckedListBox.cs
- CachedTypeface.cs
- AttachedPropertyMethodSelector.cs
- TreeWalkHelper.cs
- PointLight.cs
- NavigationProperty.cs
- SortedList.cs
- SchemaImporterExtension.cs
- TextTreeInsertElementUndoUnit.cs
- ConvertersCollection.cs
- DataGridItemAutomationPeer.cs
- OLEDB_Enum.cs
- SafeCryptHandles.cs
- XsdDataContractImporter.cs
- InvalidDataException.cs
- GroupBoxRenderer.cs
- ColorKeyFrameCollection.cs
- LogicalTreeHelper.cs
- SettingsPropertyIsReadOnlyException.cs
- OleDbConnectionInternal.cs
- StyleCollection.cs
- WindowInteractionStateTracker.cs
- ParserOptions.cs
- PersonalizationDictionary.cs
- AuthorizationRuleCollection.cs
- _UriSyntax.cs
- ReliabilityContractAttribute.cs
- HttpCapabilitiesBase.cs
- RoleService.cs
- JsonObjectDataContract.cs
- SqlServer2KCompatibilityAnnotation.cs
- MergePropertyDescriptor.cs
- CodeTypeMember.cs
- SplitContainer.cs
- DocumentPageView.cs
- SyndicationLink.cs
- ScrollData.cs
- ServiceDurableInstance.cs
- Wildcard.cs
- SystemColorTracker.cs
- CodeTypeParameterCollection.cs
- ImportRequest.cs
- ListViewInsertedEventArgs.cs
- ContainerSelectorBehavior.cs
- HashHelper.cs
- XamlToRtfWriter.cs
- ClockGroup.cs
- VarRefManager.cs
- AutoCompleteStringCollection.cs
- PreviewKeyDownEventArgs.cs
- SaveFileDialog.cs
- SrgsSubset.cs
- ParentUndoUnit.cs
- CodeMemberProperty.cs
- EllipseGeometry.cs
- PersonalizableAttribute.cs
- DataRelationPropertyDescriptor.cs
- HyperLinkField.cs
- FormViewCommandEventArgs.cs
- ThreadLocal.cs
- WebPartVerbCollection.cs
- Message.cs
- SystemTcpConnection.cs
- RefType.cs
- ContentValidator.cs
- Wildcard.cs
- XamlTypeMapperSchemaContext.cs
- DataGridHeaderBorder.cs