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
- DataServiceRequestOfT.cs
- TableLayoutStyleCollection.cs
- EntityDesignerUtils.cs
- ClientCultureInfo.cs
- CryptoHandle.cs
- ExternalCalls.cs
- SmiGettersStream.cs
- ToolStrip.cs
- SerialStream.cs
- TypeSystem.cs
- CngKeyCreationParameters.cs
- SelectionProviderWrapper.cs
- Assert.cs
- FloatAverageAggregationOperator.cs
- CollectionEditVerbManager.cs
- UTF7Encoding.cs
- SchemaImporter.cs
- DesignTimeDataBinding.cs
- DataGridLengthConverter.cs
- View.cs
- CapabilitiesPattern.cs
- ApplicationContext.cs
- LinqDataSourceContextEventArgs.cs
- LoginView.cs
- ReadOnlyHierarchicalDataSource.cs
- FileDataSourceCache.cs
- SiteMapNode.cs
- TextRange.cs
- RepeaterItemCollection.cs
- CustomGrammar.cs
- UrlMappingsSection.cs
- ParserContext.cs
- SkipStoryboardToFill.cs
- DelegatedStream.cs
- ToolStripItemDesigner.cs
- WebPartZoneCollection.cs
- UnsafeNativeMethodsTablet.cs
- GridViewSortEventArgs.cs
- OLEDB_Enum.cs
- EncryptedPackageFilter.cs
- PeerNearMe.cs
- SoapFaultCodes.cs
- Vector3DKeyFrameCollection.cs
- GrammarBuilderRuleRef.cs
- TransformDescriptor.cs
- ComponentCommands.cs
- ToolBarButtonClickEvent.cs
- SecurityHelper.cs
- Margins.cs
- WpfSharedBamlSchemaContext.cs
- ResourceManagerWrapper.cs
- ResourcePart.cs
- ListBindingHelper.cs
- OneToOneMappingSerializer.cs
- SoapReflectionImporter.cs
- TextProperties.cs
- ConstraintCollection.cs
- Pen.cs
- MenuScrollingVisibilityConverter.cs
- CircleEase.cs
- XmlBinaryReader.cs
- StrokeDescriptor.cs
- XmlSchemaException.cs
- LayoutSettings.cs
- ContainerAction.cs
- StringArrayConverter.cs
- Quaternion.cs
- SourceInterpreter.cs
- CombinedGeometry.cs
- SrgsElementList.cs
- MobileControlsSectionHandler.cs
- ResourceDescriptionAttribute.cs
- nulltextcontainer.cs
- Parameter.cs
- DependencyPropertyDescriptor.cs
- CacheMemory.cs
- storepermissionattribute.cs
- BrowserCapabilitiesFactory35.cs
- DeclarativeCatalogPart.cs
- TemplateBamlTreeBuilder.cs
- ColorBlend.cs
- ButtonFlatAdapter.cs
- cache.cs
- CompositeControl.cs
- SupportingTokenDuplexChannel.cs
- WorkflowInstance.cs
- SynchronizedInputPattern.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- DataControlButton.cs
- ConversionContext.cs
- DurableInstanceContextProvider.cs
- ImageSource.cs
- SiteMapSection.cs
- InsufficientMemoryException.cs
- TextAutomationPeer.cs
- DBBindings.cs
- AsmxEndpointPickerExtension.cs
- TabItem.cs
- OrthographicCamera.cs
- ExtensionDataObject.cs