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
- ValidatingReaderNodeData.cs
- HttpClientCredentialType.cs
- Binding.cs
- BamlCollectionHolder.cs
- ControlAdapter.cs
- NumberFunctions.cs
- CodeIdentifier.cs
- BitArray.cs
- TypeToken.cs
- ClientReliableChannelBinder.cs
- HttpRuntime.cs
- ToolStripKeyboardHandlingService.cs
- ObjectConverter.cs
- CustomValidator.cs
- OdbcConnection.cs
- RelationshipConverter.cs
- DiscoveryReferences.cs
- LineGeometry.cs
- Range.cs
- GenericTextProperties.cs
- DependencyPropertyKey.cs
- ISSmlParser.cs
- DataBoundControlAdapter.cs
- FileDialogCustomPlace.cs
- MaxSessionCountExceededException.cs
- XamlDesignerSerializationManager.cs
- securitycriticaldata.cs
- InstallHelper.cs
- AnonymousIdentificationSection.cs
- TaskDesigner.cs
- WorkflowOwnerAsyncResult.cs
- AssertFilter.cs
- ColumnWidthChangingEvent.cs
- ContextConfiguration.cs
- FileCodeGroup.cs
- ProgramPublisher.cs
- SerialStream.cs
- AnnouncementService.cs
- XmlILOptimizerVisitor.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- ComboBoxRenderer.cs
- PrinterResolution.cs
- InputManager.cs
- Memoizer.cs
- util.cs
- ClientSettingsProvider.cs
- IncrementalReadDecoders.cs
- Exceptions.cs
- Monitor.cs
- PagedDataSource.cs
- Icon.cs
- OwnerDrawPropertyBag.cs
- StylusPointCollection.cs
- MD5HashHelper.cs
- listitem.cs
- EndpointConfigContainer.cs
- ActivityLocationReferenceEnvironment.cs
- SettingsPropertyValue.cs
- ItemsPanelTemplate.cs
- BuilderInfo.cs
- DiscardableAttribute.cs
- EditorPartCollection.cs
- ButtonRenderer.cs
- Exceptions.cs
- ListView.cs
- DatatypeImplementation.cs
- Point3DValueSerializer.cs
- BamlResourceContent.cs
- Int32CollectionValueSerializer.cs
- DefaultTextStore.cs
- IteratorFilter.cs
- TransformValueSerializer.cs
- MarkupExtensionParser.cs
- DefaultObjectMappingItemCollection.cs
- DataControlLinkButton.cs
- ServicesUtilities.cs
- ObjectHelper.cs
- ByteStack.cs
- Polyline.cs
- externdll.cs
- NullableConverter.cs
- ScriptRegistrationManager.cs
- FormViewUpdatedEventArgs.cs
- wmiprovider.cs
- BridgeDataRecord.cs
- DbConnectionPoolOptions.cs
- TextElementCollectionHelper.cs
- BamlLocalizationDictionary.cs
- PeerInvitationResponse.cs
- AutoResizedEvent.cs
- SecurityPolicyVersion.cs
- CaseStatementSlot.cs
- PrimitiveOperationFormatter.cs
- FormatException.cs
- RestHandler.cs
- CuspData.cs
- OutputCacheEntry.cs
- InfoCardMetadataExchangeClient.cs
- ObjectListComponentEditor.cs
- ServiceSettingsResponseInfo.cs