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
- ByteAnimation.cs
- ContentIterators.cs
- Command.cs
- DbConnectionPoolCounters.cs
- TransformGroup.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- TextElementCollection.cs
- XmlStrings.cs
- GenericWebPart.cs
- HttpRequestTraceRecord.cs
- SiteMapSection.cs
- InvokeSchedule.cs
- ConditionValidator.cs
- TraceSection.cs
- IntAverageAggregationOperator.cs
- EventLogEntry.cs
- XmlObjectSerializerContext.cs
- MultipleCopiesCollection.cs
- Compiler.cs
- WindowsFormsHostAutomationPeer.cs
- RbTree.cs
- Header.cs
- WinEventTracker.cs
- DrawingGroupDrawingContext.cs
- DateTimeValueSerializer.cs
- WebResourceUtil.cs
- DefaultExpression.cs
- ProcessHostMapPath.cs
- CountAggregationOperator.cs
- SoapTypeAttribute.cs
- ZipIOFileItemStream.cs
- FactoryMaker.cs
- Rotation3D.cs
- AppDomainManager.cs
- Symbol.cs
- ToolStripSeparator.cs
- FormatterConverter.cs
- MetadataArtifactLoader.cs
- TextTreeRootNode.cs
- LinkedList.cs
- BitmapPalette.cs
- JavaScriptSerializer.cs
- PrimitiveSchema.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- HttpMethodConstraint.cs
- ProbeMatchesApril2005.cs
- CompressStream.cs
- sqlcontext.cs
- TextServicesDisplayAttributePropertyRanges.cs
- ProviderMetadataCachedInformation.cs
- TransformerTypeCollection.cs
- SimpleHandlerFactory.cs
- ServiceDescriptionData.cs
- ObjectMaterializedEventArgs.cs
- CodeAttributeDeclarationCollection.cs
- AutomationAttributeInfo.cs
- PenThreadWorker.cs
- EditorOptionAttribute.cs
- ToolStripArrowRenderEventArgs.cs
- DictionaryItemsCollection.cs
- OptionUsage.cs
- CorrelationTokenInvalidatedHandler.cs
- IntSecurity.cs
- HttpServerVarsCollection.cs
- ConfigurationManagerInternal.cs
- Context.cs
- OutOfMemoryException.cs
- SocketException.cs
- CheckBox.cs
- CacheEntry.cs
- MessagePartProtectionMode.cs
- User.cs
- TagPrefixCollection.cs
- XmlHierarchyData.cs
- SyncMethodInvoker.cs
- AddInDeploymentState.cs
- DuplicateWaitObjectException.cs
- Calendar.cs
- Hashtable.cs
- ScrollProperties.cs
- ItemCheckedEvent.cs
- GridView.cs
- PrintingPermission.cs
- EnumUnknown.cs
- COM2ExtendedTypeConverter.cs
- CustomWebEventKey.cs
- Config.cs
- BadImageFormatException.cs
- HttpHandlerActionCollection.cs
- FileDialogCustomPlacesCollection.cs
- DataRow.cs
- DataGridViewColumn.cs
- mansign.cs
- WebPartConnectionsEventArgs.cs
- CommonProperties.cs
- MachineKeySection.cs
- CatalogPart.cs
- RowType.cs
- OutOfProcStateClientManager.cs
- LateBoundBitmapDecoder.cs