Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / Cast.cs / 1305376 / Cast.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Expressions { using System.Activities; using System.Activities.Statements; using System.Activities.Validation; using System.Collections.Generic; using System.ComponentModel; using System.Linq.Expressions; using System.Runtime; public sealed class Cast: CodeActivity { //Lock is not needed for operationFunction here. The reason is that delegates for a given Cast 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 Operand { get; set; } [DefaultValue(true)] public bool Checked { get { return this.checkedOperation; } set { this.checkedOperation = value; } } protected override void CacheMetadata(CodeActivityMetadata metadata) { UnaryExpressionHelper.OnGetArguments(metadata, this.Operand); if (this.checkedOperation) { EnsureOperationFunction(metadata, ref checkedOperationFunction, ExpressionType.ConvertChecked); } else { EnsureOperationFunction(metadata, ref uncheckedOperationFunction, ExpressionType.Convert); } } void EnsureOperationFunction(CodeActivityMetadata metadata, ref Func operationFunction, ExpressionType operatorType) { if (operationFunction == null) { ValidationError validationError; if (!UnaryExpressionHelper.TryGenerateLinqDelegate( operatorType, out operationFunction, out validationError)) { metadata.AddValidationError(validationError); } } } protected override TResult Execute(CodeActivityContext context) { TOperand operandValue = this.Operand.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(operandValue); } else { return uncheckedOperationFunction(operandValue); } } } } // 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
- PropertyMapper.cs
- VSWCFServiceContractGenerator.cs
- AnnotationComponentChooser.cs
- SimplePropertyEntry.cs
- ListDesigner.cs
- ReflectEventDescriptor.cs
- CollectionChangeEventArgs.cs
- XamlSerializer.cs
- ReadWriteObjectLock.cs
- BitmapMetadataBlob.cs
- TraceInternal.cs
- DashStyle.cs
- RightsManagementErrorHandler.cs
- EmbeddedMailObject.cs
- DataServiceClientException.cs
- Int32EqualityComparer.cs
- MarshalByRefObject.cs
- TrustLevelCollection.cs
- FontSizeConverter.cs
- PluggableProtocol.cs
- EventBookmark.cs
- EncoderParameter.cs
- NativeBuffer.cs
- PixelFormatConverter.cs
- UserControl.cs
- CodeGotoStatement.cs
- Queue.cs
- FileDataSourceCache.cs
- ServerIdentity.cs
- DiscreteKeyFrames.cs
- AbsoluteQuery.cs
- DeflateStream.cs
- ConstantCheck.cs
- BatchWriter.cs
- Rfc2898DeriveBytes.cs
- RuleInfoComparer.cs
- UserPreferenceChangingEventArgs.cs
- DataGridView.cs
- ActivationServices.cs
- ItemContainerProviderWrapper.cs
- TextBreakpoint.cs
- InfoCardAsymmetricCrypto.cs
- TcpChannelListener.cs
- ToolTipAutomationPeer.cs
- CodeTypeReferenceSerializer.cs
- TypeKeyValue.cs
- BufferedOutputStream.cs
- HtmlEmptyTagControlBuilder.cs
- EntityDataSourceContextDisposingEventArgs.cs
- BuildDependencySet.cs
- SqlConnectionHelper.cs
- XmlnsCache.cs
- CompModSwitches.cs
- FlowDocumentPage.cs
- NamedObject.cs
- FunctionMappingTranslator.cs
- IconBitmapDecoder.cs
- PasswordTextContainer.cs
- PropertyGridView.cs
- UnsafeCollabNativeMethods.cs
- ScriptResourceAttribute.cs
- RadioButtonBaseAdapter.cs
- WebPartsPersonalization.cs
- RawTextInputReport.cs
- PluralizationService.cs
- FontStretchConverter.cs
- ZipIOFileItemStream.cs
- TypePresenter.xaml.cs
- Dispatcher.cs
- FamilyCollection.cs
- DefaultBindingPropertyAttribute.cs
- UdpReplyToBehavior.cs
- ValueUnavailableException.cs
- MachineKeySection.cs
- DataGridViewMethods.cs
- AppSettingsSection.cs
- SafeSystemMetrics.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- ToolboxComponentsCreatingEventArgs.cs
- CellTreeSimplifier.cs
- JulianCalendar.cs
- IconConverter.cs
- ActivityExecutor.cs
- SystemWebCachingSectionGroup.cs
- DataGridViewRowsRemovedEventArgs.cs
- SchemaImporter.cs
- HtmlInputRadioButton.cs
- ServicePoint.cs
- ComponentManagerBroker.cs
- StatusBarPanel.cs
- XsltArgumentList.cs
- ExplicitDiscriminatorMap.cs
- WmlPanelAdapter.cs
- BackEase.cs
- AliasedSlot.cs
- SystemUdpStatistics.cs
- SHA1Cng.cs
- FieldBuilder.cs
- ImageInfo.cs
- ConfigurationPropertyCollection.cs