Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / Multiply.cs / 1305376 / Multiply.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; public sealed class Multiply: CodeActivity { //Lock is not needed for operationFunction here. The reason is that delegates for a given Multiply 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 checkedOperationFunction; static Func uncheckedOperationFunction; bool checkedOperation = true; [RequiredArgument] [DefaultValue(null)] public InArgument Left { get; set; } [RequiredArgument] [DefaultValue(null)] public InArgument Right { get; set; } [DefaultValue(true)] public bool Checked { get { return this.checkedOperation; } set { this.checkedOperation = value; } } protected override void CacheMetadata(CodeActivityMetadata metadata) { BinaryExpressionHelper.OnGetArguments(metadata, this.Left, this.Right); if (this.checkedOperation) { EnsureOperationFunction(metadata, ref checkedOperationFunction, ExpressionType.MultiplyChecked); } else { EnsureOperationFunction(metadata, ref uncheckedOperationFunction, ExpressionType.Multiply); } } void EnsureOperationFunction(CodeActivityMetadata metadata, ref Func operationFunction, ExpressionType operatorType) { if (operationFunction == null) { ValidationError validationError; if (!BinaryExpressionHelper.TryGenerateLinqDelegate( operatorType, out operationFunction, out validationError)) { metadata.AddValidationError(validationError); } } } protected override TResult Execute(CodeActivityContext context) { TLeft leftValue = this.Left.Get(context); TRight rightValue = this.Right.Get(context); //if user changed Checked flag between Open and Execution, //a NRE may be thrown and that's by design if (this.checkedOperation) { return checkedOperationFunction(leftValue, rightValue); } else { return uncheckedOperationFunction(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
- ColumnHeader.cs
- SortFieldComparer.cs
- OleDbException.cs
- AdapterDictionary.cs
- PersistenceTypeAttribute.cs
- DebugManager.cs
- EventEntry.cs
- Compensate.cs
- VisualStateChangedEventArgs.cs
- HtmlSelect.cs
- ipaddressinformationcollection.cs
- QilParameter.cs
- LifetimeManager.cs
- SiteMapNodeCollection.cs
- Random.cs
- MethodImplAttribute.cs
- EventSinkActivity.cs
- GenericIdentity.cs
- EntityDataSourceContextDisposingEventArgs.cs
- ImageCodecInfo.cs
- ValueProviderWrapper.cs
- PageContentCollection.cs
- FigureHelper.cs
- XamlFigureLengthSerializer.cs
- UTF7Encoding.cs
- WebSysDisplayNameAttribute.cs
- GregorianCalendar.cs
- PackageRelationshipCollection.cs
- OptimisticConcurrencyException.cs
- Compiler.cs
- Console.cs
- MimeObjectFactory.cs
- PersonalizationProviderHelper.cs
- CustomErrorsSectionWrapper.cs
- RuntimeArgumentHandle.cs
- LayoutInformation.cs
- EntryIndex.cs
- InputReportEventArgs.cs
- TitleStyle.cs
- ObjectAnimationBase.cs
- AsyncInvokeOperation.cs
- HandlerFactoryWrapper.cs
- CapabilitiesAssignment.cs
- StylusDownEventArgs.cs
- XmlSchemaValidator.cs
- CommandManager.cs
- CellLabel.cs
- ButtonBaseAdapter.cs
- HwndStylusInputProvider.cs
- JapaneseLunisolarCalendar.cs
- MetafileHeaderEmf.cs
- TextFormatterImp.cs
- DataControlFieldCell.cs
- TagPrefixCollection.cs
- Cursors.cs
- TTSEngineProxy.cs
- CustomAttribute.cs
- SimpleBitVector32.cs
- Token.cs
- DiscoveryServerProtocol.cs
- DesignTimeTemplateParser.cs
- SqlSupersetValidator.cs
- IPAddress.cs
- WindowsHyperlink.cs
- InstanceContextManager.cs
- PropertyCondition.cs
- IndexedString.cs
- SpeechSynthesizer.cs
- GregorianCalendarHelper.cs
- ObjectViewQueryResultData.cs
- CompilerLocalReference.cs
- SourceInterpreter.cs
- DirectoryInfo.cs
- EditorPart.cs
- OutputCacheProfileCollection.cs
- DeclarativeCatalogPartDesigner.cs
- GCHandleCookieTable.cs
- OneWayChannelFactory.cs
- BrowserInteropHelper.cs
- ErrorEventArgs.cs
- SerializationObjectManager.cs
- ReadOnlyHierarchicalDataSourceView.cs
- ArcSegment.cs
- HybridDictionary.cs
- UniformGrid.cs
- FilterQuery.cs
- DataSourceControlBuilder.cs
- ObjectToken.cs
- TextTrailingCharacterEllipsis.cs
- GPPOINT.cs
- BlockUIContainer.cs
- ErrorHandler.cs
- ContentIterators.cs
- SamlAuthenticationClaimResource.cs
- Vector3DIndependentAnimationStorage.cs
- ReadingWritingEntityEventArgs.cs
- SrgsGrammarCompiler.cs
- ObjectQuery_EntitySqlExtensions.cs
- WebEvents.cs
- InputLanguageCollection.cs