Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Rules / RuleSetCollection.cs / 1305376 / RuleSetCollection.cs
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Globalization; using System.Text; using System.Workflow.ComponentModel; namespace System.Workflow.Activities.Rules { #region class RuleSetCollection public sealed class RuleSetCollection : KeyedCollection, IWorkflowChangeDiff { #region members and constructors private bool _runtimeInitialized; [NonSerialized] private object syncLock = new object(); public RuleSetCollection() { } #endregion #region keyed collection members protected override string GetKeyForItem(RuleSet item) { return item.Name; } protected override void InsertItem(int index, RuleSet item) { if (this._runtimeInitialized) throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime)); if (item.Name != null && item.Name.Length >= 0 && this.Contains(item.Name)) { string message = string.Format(CultureInfo.CurrentCulture, Messages.RuleSetExists, item.Name); throw new ArgumentException(message); } base.InsertItem(index, item); } protected override void RemoveItem(int index) { if (this._runtimeInitialized) throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime)); base.RemoveItem(index); } protected override void SetItem(int index, RuleSet item) { if (this._runtimeInitialized) throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime)); base.SetItem(index, item); } new public void Add(RuleSet item) { if (this._runtimeInitialized) throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime)); if (null == item) { throw new ArgumentNullException("item"); } if (null == item.Name) { string message = string.Format(CultureInfo.CurrentCulture, Messages.InvalidRuleSetName, "item.Name"); throw new ArgumentException(message); } base.Add(item); } #endregion #region runtime initializing internal void OnRuntimeInitialized() { lock (this.syncLock) { if (this._runtimeInitialized) return; foreach (RuleSet ruleSet in this) { ruleSet.OnRuntimeInitialized(); } _runtimeInitialized = true; } } internal bool RuntimeMode { set { this._runtimeInitialized = value; } get { return this._runtimeInitialized; } } internal string GenerateRuleSetName() { string nameBase = Messages.NewRuleSetName; string newName; int i = 1; do { newName = nameBase + i.ToString(CultureInfo.InvariantCulture); i++; } while(this.Contains(newName)); return newName; } #endregion #region IWorkflowChangeDiff Members public IList Diff(object originalDefinition, object changedDefinition) { List listChanges = new List (); RuleSetCollection originalRuleSets = (RuleSetCollection)originalDefinition; RuleSetCollection changedRuleSets = (RuleSetCollection)changedDefinition; if (null != changedRuleSets) { foreach (RuleSet changedRuleSet in changedRuleSets) { if ((originalRuleSets != null) && (originalRuleSets.Contains(changedRuleSet.Name))) { RuleSet originalRuleSet = originalRuleSets[changedRuleSet.Name]; if (!originalRuleSet.Equals(changedRuleSet)) { listChanges.Add(new UpdatedRuleSetAction(originalRuleSet, changedRuleSet)); } } else { listChanges.Add(new AddedRuleSetAction(changedRuleSet)); } } } if (null != originalRuleSets) { foreach (RuleSet originalRuleSet in originalRuleSets) { if ((changedRuleSets == null) || (!changedRuleSets.Contains(originalRuleSet.Name))) { listChanges.Add(new RemovedRuleSetAction(originalRuleSet)); } } } return listChanges; } #endregion } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ClipboardData.cs
- ToolStripLocationCancelEventArgs.cs
- PatternMatcher.cs
- MultiBindingExpression.cs
- ProtectedProviderSettings.cs
- Faults.cs
- PropertyGrid.cs
- InheritedPropertyDescriptor.cs
- Token.cs
- XmlSerializerVersionAttribute.cs
- XmlArrayItemAttribute.cs
- XmlWriterTraceListener.cs
- MsmqPoisonMessageException.cs
- DSACryptoServiceProvider.cs
- ToolTip.cs
- BorderGapMaskConverter.cs
- NavigateEvent.cs
- ObjectSecurity.cs
- DataListCommandEventArgs.cs
- Debug.cs
- ValidatingReaderNodeData.cs
- StylusPointPropertyId.cs
- IncrementalReadDecoders.cs
- DateTimeFormatInfo.cs
- CharUnicodeInfo.cs
- ReachDocumentPageSerializerAsync.cs
- ModifierKeysValueSerializer.cs
- _Semaphore.cs
- RotationValidation.cs
- VirtualizingPanel.cs
- DocumentOutline.cs
- DomainConstraint.cs
- PersonalizationDictionary.cs
- Popup.cs
- XmlComment.cs
- BulletDecorator.cs
- ContainerFilterService.cs
- elementinformation.cs
- DocumentApplication.cs
- FacetEnabledSchemaElement.cs
- XmlDataSourceView.cs
- AnimationException.cs
- PeerDefaultCustomResolverClient.cs
- GridItemCollection.cs
- XmlDownloadManager.cs
- FixedSOMElement.cs
- StorageConditionPropertyMapping.cs
- VectorAnimation.cs
- RootBuilder.cs
- TimeSpanMinutesConverter.cs
- RtfNavigator.cs
- IPPacketInformation.cs
- ColorBlend.cs
- TagPrefixAttribute.cs
- AppDomainFactory.cs
- CornerRadiusConverter.cs
- SQLDoubleStorage.cs
- ErrorLog.cs
- SqlGatherConsumedAliases.cs
- DefinitionUpdate.cs
- BinaryReader.cs
- ShutDownListener.cs
- SmiTypedGetterSetter.cs
- HtmlFormWrapper.cs
- SqlDataSourceSelectingEventArgs.cs
- SqlCrossApplyToCrossJoin.cs
- MouseDevice.cs
- BackEase.cs
- XPathNodeHelper.cs
- TypeGeneratedEventArgs.cs
- WorkflowDebuggerSteppingAttribute.cs
- UxThemeWrapper.cs
- SchemaTableOptionalColumn.cs
- MarkupCompilePass1.cs
- PointHitTestParameters.cs
- ProcessModelInfo.cs
- CompilerTypeWithParams.cs
- Win32Native.cs
- ReturnType.cs
- XamlParser.cs
- PageTheme.cs
- CssStyleCollection.cs
- InputQueue.cs
- Parser.cs
- WebPartConnectionsConnectVerb.cs
- EntityDataSourceWrapperCollection.cs
- FormsAuthenticationCredentials.cs
- ProxyHwnd.cs
- WindowsSysHeader.cs
- PrintControllerWithStatusDialog.cs
- MetadataHelper.cs
- TextServicesPropertyRanges.cs
- HScrollProperties.cs
- Int64AnimationBase.cs
- StubHelpers.cs
- GenericsInstances.cs
- StandardOleMarshalObject.cs
- Int32Converter.cs
- TypeSystemHelpers.cs
- _ScatterGatherBuffers.cs