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
- XPathScanner.cs
- LostFocusEventManager.cs
- ColumnTypeConverter.cs
- HtmlElementErrorEventArgs.cs
- Application.cs
- DataGridViewCell.cs
- StreamGeometry.cs
- Exceptions.cs
- FixedTextView.cs
- SecUtil.cs
- DocumentGrid.cs
- GcSettings.cs
- CompressEmulationStream.cs
- ConsoleEntryPoint.cs
- AmbientEnvironment.cs
- HostedAspNetEnvironment.cs
- XmlLanguage.cs
- DeviceContexts.cs
- TreeViewImageKeyConverter.cs
- DocumentReferenceCollection.cs
- DriveInfo.cs
- PointHitTestParameters.cs
- SID.cs
- MexHttpsBindingElement.cs
- XsdValidatingReader.cs
- Types.cs
- Trace.cs
- SafeWaitHandle.cs
- odbcmetadatacollectionnames.cs
- CardSpacePolicyElement.cs
- IsolatedStorageException.cs
- WebCategoryAttribute.cs
- TreeChangeInfo.cs
- ImageInfo.cs
- UniqueIdentifierService.cs
- ExtendedPropertyDescriptor.cs
- SocketAddress.cs
- IndentedWriter.cs
- RSAPKCS1SignatureFormatter.cs
- RemoteWebConfigurationHostStream.cs
- GradientStop.cs
- ArrayTypeMismatchException.cs
- DataGridViewRowEventArgs.cs
- FullTrustAssembly.cs
- ResourceDefaultValueAttribute.cs
- Token.cs
- ImageKeyConverter.cs
- Vector3DCollection.cs
- SystemMulticastIPAddressInformation.cs
- ConditionalExpression.cs
- ConfigurationPropertyCollection.cs
- DrawingDrawingContext.cs
- TrustManagerMoreInformation.cs
- NameSpaceEvent.cs
- HierarchicalDataBoundControl.cs
- OdbcErrorCollection.cs
- BitmapCacheBrush.cs
- CompressedStack.cs
- MimeWriter.cs
- EmptyEnumerator.cs
- EmptyElement.cs
- ClosableStream.cs
- HyperLink.cs
- TypeHelpers.cs
- ConversionHelper.cs
- BaseValidatorDesigner.cs
- XmlDictionaryWriter.cs
- CodeNamespaceImportCollection.cs
- TableLayoutStyle.cs
- VectorConverter.cs
- ExpressionVisitorHelpers.cs
- DataGridViewSelectedRowCollection.cs
- WebBrowserProgressChangedEventHandler.cs
- DataBindingHandlerAttribute.cs
- XmlSchemaAnyAttribute.cs
- WebPartConnectionsConnectVerb.cs
- XmlElementList.cs
- __TransparentProxy.cs
- SapiRecoInterop.cs
- URLMembershipCondition.cs
- _NestedMultipleAsyncResult.cs
- BuilderInfo.cs
- RewritingValidator.cs
- HttpClientCertificate.cs
- RegexTree.cs
- ResizeGrip.cs
- HiddenField.cs
- ToolStripItemDataObject.cs
- RefreshEventArgs.cs
- RuntimeEnvironment.cs
- Parallel.cs
- StylusPointPropertyId.cs
- StringBuilder.cs
- RichTextBoxAutomationPeer.cs
- AsyncContentLoadedEventArgs.cs
- SoapInteropTypes.cs
- UrlAuthorizationModule.cs
- cookieexception.cs
- GroupItem.cs
- CancellationHandlerDesigner.cs