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
- PropertySourceInfo.cs
- GridEntry.cs
- StrokeNodeOperations.cs
- NativeMethods.cs
- RadioButton.cs
- DurableInstancingOptions.cs
- AutoSizeComboBox.cs
- TrustSection.cs
- ScriptDescriptor.cs
- GraphicsContext.cs
- VectorAnimationUsingKeyFrames.cs
- LineGeometry.cs
- MenuItem.cs
- ObjectQueryExecutionPlan.cs
- Function.cs
- Native.cs
- NumericPagerField.cs
- LabelAutomationPeer.cs
- HatchBrush.cs
- PrintPageEvent.cs
- SessionChannels.cs
- MenuItemAutomationPeer.cs
- NumberSubstitution.cs
- COM2IDispatchConverter.cs
- NullRuntimeConfig.cs
- AdornerDecorator.cs
- EntityCollection.cs
- Button.cs
- ToolStripSeparator.cs
- FaultPropagationQuery.cs
- Calendar.cs
- IncrementalHitTester.cs
- FirewallWrapper.cs
- ExtendedProperty.cs
- TypeSemantics.cs
- ResourceDefaultValueAttribute.cs
- ScalarType.cs
- OneOfScalarConst.cs
- CancelEventArgs.cs
- BindStream.cs
- SymbolEqualComparer.cs
- BitmapScalingModeValidation.cs
- StateMachineWorkflowDesigner.cs
- ComboBoxRenderer.cs
- XmlSerializerVersionAttribute.cs
- TCEAdapterGenerator.cs
- PageParserFilter.cs
- ControlCachePolicy.cs
- DelegateBodyWriter.cs
- relpropertyhelper.cs
- PropertyEntry.cs
- ClassGenerator.cs
- AnonymousIdentificationModule.cs
- COM2IDispatchConverter.cs
- ToolStripTextBox.cs
- DataSet.cs
- ExpressionBuilder.cs
- PackagePart.cs
- CodeObject.cs
- WebPartManager.cs
- ConditionalAttribute.cs
- ClassGenerator.cs
- ScopeElement.cs
- Registry.cs
- EmbeddedMailObject.cs
- PictureBox.cs
- BufferedGraphics.cs
- MatrixCamera.cs
- CqlParser.cs
- WindowPatternIdentifiers.cs
- XmlExceptionHelper.cs
- SqlServer2KCompatibilityAnnotation.cs
- PointLightBase.cs
- SimpleHandlerFactory.cs
- VBCodeProvider.cs
- SocketException.cs
- ClientRoleProvider.cs
- Tokenizer.cs
- CustomExpressionEventArgs.cs
- MsmqOutputChannel.cs
- GridItemPatternIdentifiers.cs
- MatrixTransform.cs
- ZipPackagePart.cs
- WCFModelStrings.Designer.cs
- StringToken.cs
- securitycriticaldataformultiplegetandset.cs
- FontFamilyConverter.cs
- CheckBoxStandardAdapter.cs
- RadioButtonFlatAdapter.cs
- XamlGridLengthSerializer.cs
- StubHelpers.cs
- messageonlyhwndwrapper.cs
- XmlSchemaValidationException.cs
- ImmutableObjectAttribute.cs
- QilLiteral.cs
- AlternateViewCollection.cs
- SqlFactory.cs
- DocumentViewer.cs
- GetMemberBinder.cs
- CleanUpVirtualizedItemEventArgs.cs