Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / Switch.cs / 1305376 / Switch.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Activities; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq.Expressions; using System.Windows.Markup; using System.Runtime; [ContentProperty("Cases")] public sealed class Switch: NativeActivity { IDictionary cases; public Switch() { } public Switch(Expression > expression) : this() { if (expression == null) { throw FxTrace.Exception.ArgumentNull("expression"); } this.Expression = new InArgument (expression); } public Switch(Activity expression) : this() { if (expression == null) { throw FxTrace.Exception.ArgumentNull("expression"); } this.Expression = new InArgument (expression); } public Switch(InArgument expression) : this() { if (expression == null) { throw FxTrace.Exception.ArgumentNull("expression"); } this.Expression = expression; } [RequiredArgument] [DefaultValue(null)] public InArgument Expression { get; set; } public IDictionary Cases { get { if (this.cases == null) { this.cases = new CasesDictionary (); } return this.cases; } } [DefaultValue(null)] public Activity Default { get; set; } protected override void CacheMetadata(NativeActivityMetadata metadata) { RuntimeArgument expressionArgument = new RuntimeArgument("Expression", typeof(T), ArgumentDirection.In, true); metadata.Bind(Expression, expressionArgument); metadata.SetArgumentsCollection(new Collection { expressionArgument }); Collection children = new Collection (); foreach (Activity child in Cases.Values) { children.Add(child); } if (Default != null) { children.Add(Default); } metadata.SetChildrenCollection(children); } protected override void Execute(NativeActivityContext context) { T result = Expression.Get(context); Activity selection = null; if (!Cases.TryGetValue(result, out selection)) { if (this.Default != null) { selection = this.Default; } else { if (TD.SwitchCaseNotFoundIsEnabled()) { TD.SwitchCaseNotFound(this.DisplayName); } } } if (selection != null) { context.ScheduleActivity(selection); } } } } // 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
- DataObjectSettingDataEventArgs.cs
- RuntimeArgumentHandle.cs
- UnsafeNativeMethods.cs
- JumpTask.cs
- TracingConnectionListener.cs
- PersonalizationEntry.cs
- StringSorter.cs
- GridLength.cs
- ListComponentEditor.cs
- CodeSubDirectory.cs
- FrameworkObject.cs
- User.cs
- Control.cs
- WebPartCancelEventArgs.cs
- IntSecurity.cs
- ListViewItemEventArgs.cs
- PropertySegmentSerializer.cs
- XslVisitor.cs
- SyndicationElementExtension.cs
- ChildTable.cs
- DoubleCollectionValueSerializer.cs
- EmptyEnumerable.cs
- ImageUrlEditor.cs
- CompositionDesigner.cs
- CommonProperties.cs
- oledbconnectionstring.cs
- ConfigXmlComment.cs
- SafeRightsManagementPubHandle.cs
- EncodedStreamFactory.cs
- AndCondition.cs
- CannotUnloadAppDomainException.cs
- WebControlParameterProxy.cs
- UrlParameterReader.cs
- TrackBarRenderer.cs
- InputLangChangeRequestEvent.cs
- SelectionUIService.cs
- QilUnary.cs
- DictionaryChange.cs
- IIS7WorkerRequest.cs
- ConfigurationStrings.cs
- Point3DCollectionValueSerializer.cs
- Rules.cs
- FontStyleConverter.cs
- EventListenerClientSide.cs
- ModifierKeysConverter.cs
- WmlListAdapter.cs
- Utilities.cs
- _NtlmClient.cs
- XmlSerializableServices.cs
- _Events.cs
- TextSyndicationContentKindHelper.cs
- GreenMethods.cs
- AppManager.cs
- DataServiceResponse.cs
- ControlIdConverter.cs
- AssemblyInfo.cs
- InstanceCreationEditor.cs
- ConcurrentStack.cs
- Stack.cs
- QilList.cs
- XomlCompilerHelpers.cs
- FileSystemWatcher.cs
- TextServicesCompartment.cs
- MergeLocalizationDirectives.cs
- TypeUsageBuilder.cs
- UnsafeNativeMethods.cs
- OdbcConnectionPoolProviderInfo.cs
- ResourceDescriptionAttribute.cs
- QueryMatcher.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- TypeDescriptionProviderAttribute.cs
- ParseChildrenAsPropertiesAttribute.cs
- SoapAttributeOverrides.cs
- ClientOperation.cs
- Exceptions.cs
- CultureInfo.cs
- PeerInputChannelListener.cs
- GlyphsSerializer.cs
- HeaderUtility.cs
- SecurityElement.cs
- UIElement.cs
- Converter.cs
- SoapDocumentServiceAttribute.cs
- ASCIIEncoding.cs
- WebPartTransformerAttribute.cs
- RightsManagementInformation.cs
- XmlSchemaIdentityConstraint.cs
- WorkflowQueue.cs
- CodeConstructor.cs
- regiisutil.cs
- BaseAddressElementCollection.cs
- FillRuleValidation.cs
- _TransmitFileOverlappedAsyncResult.cs
- DataGridRelationshipRow.cs
- Parameter.cs
- DynamicEndpoint.cs
- WebPartExportVerb.cs
- CodeArrayIndexerExpression.cs
- PropertyOverridesDialog.cs
- ListItemConverter.cs