Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / Or.cs / 1305376 / Or.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Expressions
{
using System.Activities;
using System.Activities.Validation;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Linq.Expressions;
using System.Runtime;
[SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldNotMatchKeywords,
Justification = "Optimizing for XAML naming. VB imperative users will [] qualify (e.g. New [Or])")]
public sealed class Or : CodeActivity
{
//Lock is not needed for operationFunction here. The reason is that delegates for a given Or 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.Or, 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
- PathStreamGeometryContext.cs
- IProvider.cs
- GroupItemAutomationPeer.cs
- MarkedHighlightComponent.cs
- CacheModeValueSerializer.cs
- CodeIdentifiers.cs
- FilterException.cs
- PTUtility.cs
- DetailsViewInsertedEventArgs.cs
- MediaTimeline.cs
- GridViewRowCollection.cs
- HttpProfileGroupBase.cs
- TextBlockAutomationPeer.cs
- VisualStyleElement.cs
- ClockGroup.cs
- ObjectDisposedException.cs
- TextCompositionEventArgs.cs
- OpenTypeCommon.cs
- ReadOnlyDataSourceView.cs
- Track.cs
- ProfileBuildProvider.cs
- CommentEmitter.cs
- WaitForChangedResult.cs
- HandledMouseEvent.cs
- CustomLineCap.cs
- UserControlFileEditor.cs
- EntityTypeEmitter.cs
- WsdlServiceChannelBuilder.cs
- CalculatedColumn.cs
- DbParameterCollection.cs
- RegexRunner.cs
- ActivityFunc.cs
- BigInt.cs
- HeaderLabel.cs
- DurableInstancingOptions.cs
- ResourcesChangeInfo.cs
- MasterPage.cs
- DockAndAnchorLayout.cs
- InputScopeConverter.cs
- NativeMethods.cs
- Registration.cs
- DataContractSerializerSection.cs
- XmlDocument.cs
- DataGridLinkButton.cs
- SqlTypesSchemaImporter.cs
- TypeUsageBuilder.cs
- TimeSpan.cs
- Transform.cs
- SourceInterpreter.cs
- TemplateBaseAction.cs
- log.cs
- UriParserTemplates.cs
- SqlFactory.cs
- ShaderEffect.cs
- DataGridRowAutomationPeer.cs
- InternalCache.cs
- FieldToken.cs
- MetadataCollection.cs
- DataGridViewButtonCell.cs
- HashAlgorithm.cs
- InstanceKeyNotReadyException.cs
- BinaryObjectReader.cs
- PropertyInformation.cs
- CipherData.cs
- PageBreakRecord.cs
- DesignerAttribute.cs
- ConfigurationElement.cs
- LambdaCompiler.Address.cs
- EnumerableRowCollection.cs
- FileUtil.cs
- XmlAttribute.cs
- XmlNode.cs
- RijndaelManaged.cs
- BitmapEffectDrawingContent.cs
- TableRowCollection.cs
- ProcessRequestArgs.cs
- GenericIdentity.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- DispatcherObject.cs
- XmlSchemaObject.cs
- BindingElementExtensionElement.cs
- StrongNameMembershipCondition.cs
- EntityModelBuildProvider.cs
- DBCommandBuilder.cs
- ArgumentValueSerializer.cs
- ParsedRoute.cs
- CompilationRelaxations.cs
- ConnectorMovedEventArgs.cs
- FixedSOMGroup.cs
- DependencyProperty.cs
- StylusPointDescription.cs
- TimeSpanValidatorAttribute.cs
- ChannelManagerService.cs
- SmtpSection.cs
- ToolboxBitmapAttribute.cs
- metadatamappinghashervisitor.cs
- DataRecordInfo.cs
- ExpandSegment.cs
- odbcmetadatacolumnnames.cs
- DependencyPropertyAttribute.cs