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
- TCPClient.cs
- DictionaryKeyPropertyAttribute.cs
- ExeConfigurationFileMap.cs
- StorageModelBuildProvider.cs
- DragDrop.cs
- TableRowsCollectionEditor.cs
- DATA_BLOB.cs
- BinaryReader.cs
- GlobalizationSection.cs
- HttpProcessUtility.cs
- PolicyManager.cs
- DocumentPageViewAutomationPeer.cs
- TdsParserHelperClasses.cs
- Pkcs7Recipient.cs
- XmlWhitespace.cs
- AuthenticationModuleElement.cs
- ChangesetResponse.cs
- HashMembershipCondition.cs
- ServiceDescriptionSerializer.cs
- DataTableReader.cs
- ContentDisposition.cs
- CodeIterationStatement.cs
- XmlExceptionHelper.cs
- ProfilePropertySettingsCollection.cs
- ISessionStateStore.cs
- Camera.cs
- SocketPermission.cs
- lengthconverter.cs
- ListBindingConverter.cs
- PeerChannelListener.cs
- EventMappingSettingsCollection.cs
- FlowSwitch.cs
- RunWorkerCompletedEventArgs.cs
- DbDataSourceEnumerator.cs
- CryptoStream.cs
- InvalidPropValue.cs
- ObjectItemCollection.cs
- TrackingMemoryStream.cs
- TraceSection.cs
- SliderAutomationPeer.cs
- EpmAttributeNameBuilder.cs
- httpapplicationstate.cs
- InputDevice.cs
- ApplicationDirectoryMembershipCondition.cs
- WebPartVerbsEventArgs.cs
- WebZone.cs
- TextBox.cs
- StreamResourceInfo.cs
- BrowserCapabilitiesFactory.cs
- CodeArrayCreateExpression.cs
- SignerInfo.cs
- DefaultValidator.cs
- SqlNotificationRequest.cs
- Shape.cs
- BamlRecords.cs
- MenuItem.cs
- XmlSchemaSimpleType.cs
- DateTimeFormatInfoScanner.cs
- WebBrowser.cs
- SqlServices.cs
- Span.cs
- UserMapPath.cs
- RecognizedAudio.cs
- ListBox.cs
- TimeManager.cs
- ResetableIterator.cs
- DeviceContexts.cs
- HitTestParameters3D.cs
- X509IssuerSerialKeyIdentifierClause.cs
- ProjectionPathBuilder.cs
- IgnorePropertiesAttribute.cs
- EastAsianLunisolarCalendar.cs
- PathStreamGeometryContext.cs
- TTSEvent.cs
- TextBlock.cs
- COM2TypeInfoProcessor.cs
- CheckBoxList.cs
- NameScopePropertyAttribute.cs
- HttpWebRequestElement.cs
- TextSegment.cs
- BindingValueChangedEventArgs.cs
- SnapshotChangeTrackingStrategy.cs
- ArithmeticException.cs
- KoreanCalendar.cs
- UnitySerializationHolder.cs
- SessionStateModule.cs
- BindingNavigator.cs
- StringReader.cs
- InArgumentConverter.cs
- PatternMatcher.cs
- PropertyEmitter.cs
- ListBindingConverter.cs
- SQLByte.cs
- WebPartRestoreVerb.cs
- Transform3DGroup.cs
- DiagnosticsConfiguration.cs
- CaseInsensitiveHashCodeProvider.cs
- ImageMetadata.cs
- ResXBuildProvider.cs
- HttpsTransportElement.cs