Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Rules / DeclarativeConditionsCollection.cs / 1305376 / DeclarativeConditionsCollection.cs
// ---------------------------------------------------------------------------- // Copyright (C) 2005 Microsoft Corporation - All Rights Reserved // --------------------------------------------------------------------------- using System; using System.Diagnostics; using System.CodeDom; using System.Collections.ObjectModel; using System.ComponentModel.Design.Serialization; using System.Collections.Generic; using System.Workflow.ComponentModel; using System.Globalization; using System.IO; using System.Workflow.ComponentModel.Serialization; namespace System.Workflow.Activities.Rules { #region RuleConditionCollection Class [Serializable] public sealed class RuleConditionCollection : KeyedCollection, IWorkflowChangeDiff { private bool _runtimeInitialized; [NonSerialized] private object _runtimeInitializationLock = new object(); public RuleConditionCollection() { } protected override string GetKeyForItem(RuleCondition item) { return item.Name; } /// /// Mark the DeclarativeConditionDefinitionCollection as Runtime Initialized to prevent direct runtime updates. /// internal void OnRuntimeInitialized() { lock (_runtimeInitializationLock) { if (_runtimeInitialized) return; foreach (RuleCondition condition in this) { condition.OnRuntimeInitialized(); } _runtimeInitialized = true; } } protected override void InsertItem(int index, RuleCondition 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.ConditionExists, 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, RuleCondition item) { if (this._runtimeInitialized) throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime)); base.SetItem(index, item); } internal bool RuntimeMode { set { this._runtimeInitialized = value; } get { return this._runtimeInitialized; } } new public void Add(RuleCondition 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.InvalidConditionName, "item.Name"); throw new ArgumentException(message); } base.Add(item); } public IListDiff(object originalDefinition, object changedDefinition) { List listChanges = new List (); RuleConditionCollection originalConditions = (RuleConditionCollection)originalDefinition; RuleConditionCollection changedConditions = (RuleConditionCollection)changedDefinition; if (null != changedConditions) { foreach (RuleCondition cCondition in changedConditions) { if (null != originalConditions) { if (originalConditions.Contains(cCondition.Name)) { RuleCondition oCondition = originalConditions[cCondition.Name]; if (!oCondition.Equals(cCondition)) { listChanges.Add(new UpdatedConditionAction(oCondition, cCondition)); } } else { listChanges.Add(new AddedConditionAction(cCondition)); } } else { listChanges.Add(new AddedConditionAction(cCondition)); } } } if (null != originalConditions) { foreach (RuleCondition oCondition in originalConditions) { if (null != changedConditions) { if (!changedConditions.Contains(oCondition.Name)) { listChanges.Add(new RemovedConditionAction(oCondition)); } } else { listChanges.Add(new RemovedConditionAction(oCondition)); } } } return listChanges; } } #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
- RemotingException.cs
- InputDevice.cs
- ListBox.cs
- Transform3DCollection.cs
- GcSettings.cs
- MimeTypePropertyAttribute.cs
- ExpandoClass.cs
- FileClassifier.cs
- FastEncoder.cs
- Normalization.cs
- TargetException.cs
- RpcCryptoRequest.cs
- DocumentAutomationPeer.cs
- ToolStripSplitButton.cs
- CompModSwitches.cs
- DateTimeFormatInfo.cs
- DesignerCatalogPartChrome.cs
- EdmItemError.cs
- StringBuilder.cs
- EncoderReplacementFallback.cs
- CaseExpr.cs
- LockCookie.cs
- TailPinnedEventArgs.cs
- AvTrace.cs
- SqlBinder.cs
- WebBrowsableAttribute.cs
- WeakReadOnlyCollection.cs
- XmlArrayAttribute.cs
- SecurityException.cs
- Utils.cs
- DataGridViewLayoutData.cs
- RightNameExpirationInfoPair.cs
- ChtmlTextWriter.cs
- MaskDescriptor.cs
- TableLayoutPanelCellPosition.cs
- DeviceContexts.cs
- Bitmap.cs
- ActivityBindForm.cs
- RuntimeUtils.cs
- ToolStripSplitStackLayout.cs
- ComplexObject.cs
- RangeBaseAutomationPeer.cs
- ComponentResourceKeyConverter.cs
- DecimalKeyFrameCollection.cs
- WebZoneDesigner.cs
- ServiceDescriptionData.cs
- Stopwatch.cs
- RuntimeResourceSet.cs
- CodeStatement.cs
- FunctionQuery.cs
- IntegerValidator.cs
- HealthMonitoringSectionHelper.cs
- TextEndOfParagraph.cs
- DbModificationClause.cs
- Selector.cs
- MetadataUtilsSmi.cs
- DataGridViewControlCollection.cs
- QueryRewriter.cs
- JumpPath.cs
- ArithmeticException.cs
- LambdaSerializationException.cs
- CompilerLocalReference.cs
- WindowsRichEditRange.cs
- ListViewItemSelectionChangedEvent.cs
- SingleSelectRootGridEntry.cs
- DataSourceIDConverter.cs
- ManifestSignedXml.cs
- DivideByZeroException.cs
- DemultiplexingClientMessageFormatter.cs
- WebControl.cs
- ConfigsHelper.cs
- TreeWalkHelper.cs
- WorkflowTerminatedException.cs
- UpdatePanelTriggerCollection.cs
- ContentType.cs
- IdnMapping.cs
- DefaultObjectMappingItemCollection.cs
- HMACSHA384.cs
- ExpressionBuilderContext.cs
- SourceElementsCollection.cs
- SqlUnionizer.cs
- XmlSerializer.cs
- Point3DCollectionConverter.cs
- HorizontalAlignConverter.cs
- XPathBuilder.cs
- Wizard.cs
- XPathAncestorIterator.cs
- DataGridPageChangedEventArgs.cs
- Soap.cs
- XamlSerializerUtil.cs
- SchemaTypeEmitter.cs
- SystemIPAddressInformation.cs
- EUCJPEncoding.cs
- LockCookie.cs
- EntityDataSourceDesigner.cs
- SafeCoTaskMem.cs
- ReliableSession.cs
- CodeBinaryOperatorExpression.cs
- AutomationEventArgs.cs
- ItemsPanelTemplate.cs