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
- Application.cs
- DependencyPropertyHelper.cs
- SafeSecurityHandles.cs
- DataGridViewLinkCell.cs
- EventDriven.cs
- ApplicationProxyInternal.cs
- ISCIIEncoding.cs
- SchemaElementLookUpTable.cs
- AuthenticatedStream.cs
- WorkflowTransactionService.cs
- StorageMappingFragment.cs
- QualificationDataAttribute.cs
- EntityFrameworkVersions.cs
- ValidatedMobileControlConverter.cs
- DynamicValueConverter.cs
- IncrementalReadDecoders.cs
- DesignColumn.cs
- safemediahandle.cs
- IdentityReference.cs
- ItemCollectionEditor.cs
- FramingChannels.cs
- SettingsAttributeDictionary.cs
- WebPartChrome.cs
- PackUriHelper.cs
- ReflectionTypeLoadException.cs
- AuthenticationServiceManager.cs
- DataGridViewTextBoxColumn.cs
- StrokeIntersection.cs
- RelatedImageListAttribute.cs
- DesignerTransactionCloseEvent.cs
- SSmlParser.cs
- FormsAuthentication.cs
- Cursors.cs
- OuterGlowBitmapEffect.cs
- RegexRunner.cs
- FillRuleValidation.cs
- BamlRecordReader.cs
- FontUnitConverter.cs
- PageThemeBuildProvider.cs
- CodePropertyReferenceExpression.cs
- SessionParameter.cs
- ContentTypeSettingClientMessageFormatter.cs
- TableHeaderCell.cs
- ButtonFlatAdapter.cs
- ImageMapEventArgs.cs
- AttributeCollection.cs
- BitmapCacheBrush.cs
- Error.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- XhtmlBasicValidatorAdapter.cs
- Delegate.cs
- DbConnectionPoolCounters.cs
- TextTreeInsertUndoUnit.cs
- RtfControls.cs
- OdbcConnectionStringbuilder.cs
- VolatileEnlistmentState.cs
- TextSchema.cs
- DataGridViewToolTip.cs
- DataServiceClientException.cs
- DbConnectionPool.cs
- SelectionChangedEventArgs.cs
- TogglePattern.cs
- ThicknessAnimation.cs
- _SSPIWrapper.cs
- ServiceDescription.cs
- JavaScriptString.cs
- Scene3D.cs
- TextTreeRootNode.cs
- DataPagerFieldItem.cs
- PathFigureCollection.cs
- TextRangeEditTables.cs
- SqlCacheDependencyDatabaseCollection.cs
- PageContent.cs
- validation.cs
- ValidationErrorCollection.cs
- BindingParameterCollection.cs
- ManagedCodeMarkers.cs
- SkinIDTypeConverter.cs
- WindowsToolbar.cs
- AmbientLight.cs
- ConfigXmlElement.cs
- Pair.cs
- MorphHelpers.cs
- WindowsListViewSubItem.cs
- Operand.cs
- JsonUriDataContract.cs
- ProcessHost.cs
- XNameConverter.cs
- DbLambda.cs
- JapaneseLunisolarCalendar.cs
- RelationshipConstraintValidator.cs
- HttpStreamMessageEncoderFactory.cs
- GACIdentityPermission.cs
- IndicCharClassifier.cs
- ScriptingSectionGroup.cs
- ToolStripItemGlyph.cs
- ToolStripSystemRenderer.cs
- FormViewPagerRow.cs
- ListParagraph.cs
- TextElementCollection.cs