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
- Tile.cs
- OverlappedContext.cs
- LongValidator.cs
- CredentialCache.cs
- BitmapFrameEncode.cs
- StringUtil.cs
- _CacheStreams.cs
- OnOperation.cs
- MethodAccessException.cs
- X509ChainPolicy.cs
- VerticalAlignConverter.cs
- FormatVersion.cs
- SqlDataSourceCommandEventArgs.cs
- SystemTcpStatistics.cs
- RepeaterItemEventArgs.cs
- SerialErrors.cs
- Unit.cs
- CrossSiteScriptingValidation.cs
- VoiceObjectToken.cs
- MemoryMappedViewStream.cs
- BigIntegerStorage.cs
- RepeatInfo.cs
- StandardToolWindows.cs
- TreeNodeEventArgs.cs
- Debug.cs
- InheritanceAttribute.cs
- ThemeableAttribute.cs
- WindowsEditBox.cs
- XmlUtil.cs
- PropertyMetadata.cs
- CalendarDesigner.cs
- BuildProviderUtils.cs
- ShaderEffect.cs
- CodeDOMUtility.cs
- Nodes.cs
- sqlnorm.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- VariableQuery.cs
- URLIdentityPermission.cs
- WindowsEditBox.cs
- DocumentSequence.cs
- FillRuleValidation.cs
- SchemaNamespaceManager.cs
- PtsPage.cs
- TableRowGroupCollection.cs
- PictureBox.cs
- WindowsToolbarItemAsMenuItem.cs
- DataStreams.cs
- manifestimages.cs
- EventLogWatcher.cs
- TextEditor.cs
- JsonByteArrayDataContract.cs
- PersistChildrenAttribute.cs
- CodeDelegateInvokeExpression.cs
- Double.cs
- ExtenderProvidedPropertyAttribute.cs
- PropertySet.cs
- OdbcDataReader.cs
- NetworkInterface.cs
- XmlSortKey.cs
- ConfigurationStrings.cs
- HyperLinkStyle.cs
- RtfControlWordInfo.cs
- OuterGlowBitmapEffect.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- QueryOutputWriterV1.cs
- AppDomainFactory.cs
- FileNameEditor.cs
- ExpressionContext.cs
- ServiceBuildProvider.cs
- CryptoApi.cs
- SmtpDigestAuthenticationModule.cs
- XPathException.cs
- _ConnectOverlappedAsyncResult.cs
- SQLString.cs
- OdbcDataAdapter.cs
- Focus.cs
- WebPartManagerDesigner.cs
- StaticTextPointer.cs
- ContentIterators.cs
- View.cs
- ImageListDesigner.cs
- OlePropertyStructs.cs
- AsymmetricSignatureDeformatter.cs
- NumericUpDownAccelerationCollection.cs
- AdRotatorDesigner.cs
- ImageFormatConverter.cs
- DataExpression.cs
- Operand.cs
- EmulateRecognizeCompletedEventArgs.cs
- RulePatternOps.cs
- List.cs
- Size3DValueSerializer.cs
- NativeMethods.cs
- TileBrush.cs
- EventWaitHandleSecurity.cs
- NotFiniteNumberException.cs
- ReferencedType.cs
- DataGridViewSelectedRowCollection.cs
- SiteIdentityPermission.cs