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
- TypeSystemProvider.cs
- DesignTimeParseData.cs
- ChangeToolStripParentVerb.cs
- XmlnsDictionary.cs
- DefaultWorkflowLoaderService.cs
- CacheMode.cs
- AccessControlEntry.cs
- DefaultProxySection.cs
- EnvironmentPermission.cs
- BitmapMetadata.cs
- RoleGroupCollection.cs
- WindowsListBox.cs
- HttpRequestBase.cs
- ControlBindingsConverter.cs
- XXXOnTypeBuilderInstantiation.cs
- TemplateNameScope.cs
- NameValueConfigurationElement.cs
- SerializerProvider.cs
- AttachedPropertyMethodSelector.cs
- PathGeometry.cs
- OperationResponse.cs
- BrushMappingModeValidation.cs
- DetailsViewRow.cs
- XmlSchemaGroup.cs
- CompiledRegexRunnerFactory.cs
- MessageQueueCriteria.cs
- SmiConnection.cs
- FilterFactory.cs
- LoadedOrUnloadedOperation.cs
- StreamGeometry.cs
- SingleAnimationUsingKeyFrames.cs
- IMembershipProvider.cs
- SimpleBitVector32.cs
- DiscreteKeyFrames.cs
- CodeRegionDirective.cs
- EventBuilder.cs
- ListMarkerSourceInfo.cs
- ConnectionConsumerAttribute.cs
- PositiveTimeSpanValidator.cs
- FileDialog.cs
- ObjectDataSourceView.cs
- AutomationElementCollection.cs
- MessageFormatterConverter.cs
- NameSpaceExtractor.cs
- PassportAuthentication.cs
- SiteMapNodeItemEventArgs.cs
- PageAdapter.cs
- FormViewAutoFormat.cs
- CodeIndexerExpression.cs
- DataControlFieldCollection.cs
- WebBrowserNavigatedEventHandler.cs
- Membership.cs
- UIAgentCrashedException.cs
- CollectionEditor.cs
- EncodingTable.cs
- FileLoadException.cs
- FormParameter.cs
- FileLoadException.cs
- XsdDateTime.cs
- AssemblyBuilderData.cs
- OrderedDictionary.cs
- X509Extension.cs
- LinqDataSourceView.cs
- DbProviderSpecificTypePropertyAttribute.cs
- AppModelKnownContentFactory.cs
- HttpListenerContext.cs
- followingquery.cs
- VirtualPathProvider.cs
- x509store.cs
- RoutedEvent.cs
- XmlSortKey.cs
- DataException.cs
- ProcessModuleCollection.cs
- ServiceHttpModule.cs
- Quaternion.cs
- FontWeight.cs
- WindowsListViewItem.cs
- OleDbStruct.cs
- OleDbError.cs
- DataGridViewCellParsingEventArgs.cs
- DataGridViewCellMouseEventArgs.cs
- Geometry.cs
- XamlToRtfParser.cs
- CompilationRelaxations.cs
- CancellationHandlerDesigner.cs
- altserialization.cs
- SoapSchemaMember.cs
- WebServiceResponseDesigner.cs
- XmlSchemaComplexContentExtension.cs
- ManagementInstaller.cs
- SchemaNamespaceManager.cs
- DockPanel.cs
- LeaseManager.cs
- ExternalFile.cs
- TaskExtensions.cs
- TreeWalker.cs
- Documentation.cs
- IPHostEntry.cs
- UnSafeCharBuffer.cs
- HtmlElement.cs