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
- streamingZipPartStream.cs
- MdiWindowListItemConverter.cs
- ArraySortHelper.cs
- NavigationProperty.cs
- DataStorage.cs
- SecurityCriticalDataForSet.cs
- TextFormatterHost.cs
- TableLayoutRowStyleCollection.cs
- TableAutomationPeer.cs
- SizeF.cs
- DesignerMetadata.cs
- SqlCacheDependencySection.cs
- Delegate.cs
- HelpProvider.cs
- EntityDataSourceChangedEventArgs.cs
- HistoryEventArgs.cs
- Stackframe.cs
- DataControlHelper.cs
- QuaternionValueSerializer.cs
- Token.cs
- SwitchElementsCollection.cs
- PolyLineSegment.cs
- SyndicationSerializer.cs
- BuildManager.cs
- Vector3D.cs
- NativeMethods.cs
- SqlBuilder.cs
- MimeBasePart.cs
- EncodingDataItem.cs
- FtpRequestCacheValidator.cs
- AnnotationService.cs
- FormatConvertedBitmap.cs
- SpellerInterop.cs
- CalendarDay.cs
- PagesChangedEventArgs.cs
- ColorConvertedBitmap.cs
- SecurityDocument.cs
- DesignerCapabilities.cs
- DataGridViewCheckBoxColumn.cs
- MarkupCompiler.cs
- SystemWebExtensionsSectionGroup.cs
- objectresult_tresulttype.cs
- WebResourceAttribute.cs
- PersonalizationStateInfo.cs
- ContentHostHelper.cs
- Subset.cs
- arclist.cs
- Dynamic.cs
- ConnectionPoolManager.cs
- NameSpaceExtractor.cs
- SqlNamer.cs
- PlatformCulture.cs
- SqlOuterApplyReducer.cs
- BinaryMethodMessage.cs
- MsmqIntegrationInputMessage.cs
- Event.cs
- SQLInt64Storage.cs
- GPPOINT.cs
- CodeLabeledStatement.cs
- GenericUriParser.cs
- StorageEntityTypeMapping.cs
- DBDataPermissionAttribute.cs
- Subset.cs
- StrokeIntersection.cs
- SecuritySessionFilter.cs
- TextSegment.cs
- ValidatedControlConverter.cs
- TreeIterators.cs
- SqlDataSourceFilteringEventArgs.cs
- XmlSchemaSimpleContent.cs
- SplineKeyFrames.cs
- DrawingState.cs
- UseManagedPresentationBindingElement.cs
- FixedHighlight.cs
- FlowPosition.cs
- SelectionWordBreaker.cs
- ModelServiceImpl.cs
- DataTemplateKey.cs
- SqlInternalConnectionSmi.cs
- SplitterPanel.cs
- VirtualDirectoryMappingCollection.cs
- UdpDiscoveryMessageFilter.cs
- ITextView.cs
- CommandExpr.cs
- DocumentEventArgs.cs
- DependencyPropertyKey.cs
- NameValueCollection.cs
- ProgressBarBrushConverter.cs
- HandleCollector.cs
- PageBreakRecord.cs
- ListChangedEventArgs.cs
- CircleHotSpot.cs
- Logging.cs
- ImageClickEventArgs.cs
- ClientData.cs
- SearchForVirtualItemEventArgs.cs
- BoundingRectTracker.cs
- ShapeTypeface.cs
- ClientTarget.cs
- SessionIDManager.cs