Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / And.cs / 1305376 / And.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Expressions
{
using System.Activities;
using System.Activities.Statements;
using System.Linq.Expressions;
using System.Activities.Validation;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime;
using System.Diagnostics.CodeAnalysis;
[SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldNotMatchKeywords,
Justification = "Optimizing for XAML naming. VB imperative users will [] qualify (e.g. New [And])")]
public sealed class And : CodeActivity
{
//Lock is not needed for operationFunction here. The reason is that delegates for a given And are the same.
//It's possible that 2 threads are assigning the operationFucntion at the same time. But it's okay because the compiled codes are the same.
static Func operationFunction;
[RequiredArgument]
[DefaultValue(null)]
public InArgument Left
{
get;
set;
}
[RequiredArgument]
[DefaultValue(null)]
public InArgument Right
{
get;
set;
}
protected override void CacheMetadata(CodeActivityMetadata metadata)
{
BinaryExpressionHelper.OnGetArguments(metadata, this.Left, this.Right);
if (operationFunction == null)
{
ValidationError validationError;
if (!BinaryExpressionHelper.TryGenerateLinqDelegate(ExpressionType.And, out operationFunction, out validationError))
{
metadata.AddValidationError(validationError);
}
}
}
protected override TResult Execute(CodeActivityContext context)
{
Fx.Assert(operationFunction != null, "OperationFunction must exist.");
TLeft leftValue = this.Left.Get(context);
TRight rightValue = this.Right.Get(context);
return operationFunction(leftValue, rightValue);
}
}
}
// 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
- ValueTypeIndexerReference.cs
- DescendentsWalkerBase.cs
- _HelperAsyncResults.cs
- NoneExcludedImageIndexConverter.cs
- __Error.cs
- PassportAuthenticationModule.cs
- ThreadPool.cs
- FileIOPermission.cs
- SystemTcpStatistics.cs
- odbcmetadatacollectionnames.cs
- IItemContainerGenerator.cs
- SqlConnectionFactory.cs
- FixedFlowMap.cs
- WebPartConnectionsConnectVerb.cs
- EntryWrittenEventArgs.cs
- TextContainerChangedEventArgs.cs
- ZipIOFileItemStream.cs
- CLRBindingWorker.cs
- ExpandCollapseProviderWrapper.cs
- DecoratedNameAttribute.cs
- WebPartCollection.cs
- RTLAwareMessageBox.cs
- DetailsViewPageEventArgs.cs
- FlowDocumentPage.cs
- ReflectionUtil.cs
- Menu.cs
- Brushes.cs
- DataGridCellsPresenter.cs
- DataSourceView.cs
- TableLayoutPanelCellPosition.cs
- WindowsUpDown.cs
- ErrorWrapper.cs
- DesignerActionList.cs
- GeometryModel3D.cs
- ClientFormsIdentity.cs
- NativeCompoundFileAPIs.cs
- DocumentPageView.cs
- CheckBoxBaseAdapter.cs
- SynchronizationHandlesCodeDomSerializer.cs
- HttpCacheParams.cs
- HttpCacheParams.cs
- KeySpline.cs
- AmbientValueAttribute.cs
- WinHttpWebProxyFinder.cs
- KnownTypes.cs
- ThreadExceptionDialog.cs
- RewritingPass.cs
- OperationParameterInfoCollection.cs
- RowToParametersTransformer.cs
- CodeArrayIndexerExpression.cs
- DataRelationPropertyDescriptor.cs
- OdbcConnectionHandle.cs
- DtrList.cs
- DataListItem.cs
- UserControlBuildProvider.cs
- DropSourceBehavior.cs
- InputLanguageSource.cs
- Model3DCollection.cs
- TryCatchDesigner.xaml.cs
- AppSecurityManager.cs
- DefaultIfEmptyQueryOperator.cs
- EmulateRecognizeCompletedEventArgs.cs
- InstallerTypeAttribute.cs
- ImageBrush.cs
- CalloutQueueItem.cs
- PathFigureCollectionValueSerializer.cs
- DropShadowBitmapEffect.cs
- ContentPosition.cs
- SelectionListComponentEditor.cs
- DrawListViewItemEventArgs.cs
- EntityDataSourceContainerNameItem.cs
- DispatcherExceptionEventArgs.cs
- XmlAttribute.cs
- ObjectDataSourceFilteringEventArgs.cs
- ConstraintStruct.cs
- counter.cs
- TextShapeableCharacters.cs
- AppearanceEditorPart.cs
- DataBinding.cs
- SafeBitVector32.cs
- UndirectedGraph.cs
- WasEndpointConfigContainer.cs
- RIPEMD160Managed.cs
- ServiceBusyException.cs
- GradientStopCollection.cs
- WinFormsSecurity.cs
- securitycriticaldata.cs
- HighContrastHelper.cs
- Array.cs
- XmlSchemaSimpleType.cs
- MessageSmuggler.cs
- DeclaredTypeElement.cs
- FindResponse.cs
- EncodingInfo.cs
- SecurityResources.cs
- ObjectSecurity.cs
- ProfileSection.cs
- MatrixValueSerializer.cs
- CollectionType.cs
- PrefixQName.cs