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
- PointConverter.cs
- MarkupCompilePass2.cs
- BindingNavigator.cs
- UriScheme.cs
- AssemblyNameProxy.cs
- Drawing.cs
- GlyphRunDrawing.cs
- SymDocumentType.cs
- AuthenticationServiceManager.cs
- DataColumnCollection.cs
- Dump.cs
- DivideByZeroException.cs
- AnimationException.cs
- KeyTimeConverter.cs
- WpfWebRequestHelper.cs
- WsdlImporterElement.cs
- MergablePropertyAttribute.cs
- RemotingSurrogateSelector.cs
- HtmlFormWrapper.cs
- RangeValueProviderWrapper.cs
- MarkedHighlightComponent.cs
- ObjectTag.cs
- PageContent.cs
- SerializationStore.cs
- XmlBindingWorker.cs
- ListMarkerSourceInfo.cs
- HtmlSelect.cs
- altserialization.cs
- TextElementAutomationPeer.cs
- XsltLoader.cs
- RelationshipFixer.cs
- BinHexDecoder.cs
- IisTraceListener.cs
- HttpsTransportElement.cs
- RealProxy.cs
- Misc.cs
- OleDbPermission.cs
- ClockGroup.cs
- TabPage.cs
- XmlQuerySequence.cs
- FieldDescriptor.cs
- ScriptRegistrationManager.cs
- SqlMethodTransformer.cs
- DesignParameter.cs
- ParallelLoopState.cs
- XmlNamedNodeMap.cs
- CacheVirtualItemsEvent.cs
- SqlDataSource.cs
- ServicePointManagerElement.cs
- SizeAnimationClockResource.cs
- DataBinding.cs
- KnownBoxes.cs
- CqlBlock.cs
- SoapElementAttribute.cs
- GridView.cs
- TabControlAutomationPeer.cs
- RelatedImageListAttribute.cs
- Timeline.cs
- HMACSHA256.cs
- RestHandler.cs
- ResourceProviderFactory.cs
- TemplateBindingExtensionConverter.cs
- QueryOpeningEnumerator.cs
- DispatcherHookEventArgs.cs
- LicenseProviderAttribute.cs
- LogEntryDeserializer.cs
- SecurityPermission.cs
- ParameterReplacerVisitor.cs
- DescendantBaseQuery.cs
- DummyDataSource.cs
- Helpers.cs
- XmlDocumentViewSchema.cs
- ConfigurationSection.cs
- ScrollItemProviderWrapper.cs
- StylusSystemGestureEventArgs.cs
- DispatcherObject.cs
- CompiledIdentityConstraint.cs
- MemberBinding.cs
- FontCacheUtil.cs
- WorkflowMarkupSerializationException.cs
- Decorator.cs
- HandlerBase.cs
- ValidationError.cs
- QilScopedVisitor.cs
- ParsedAttributeCollection.cs
- CommandManager.cs
- DataGridViewRowPostPaintEventArgs.cs
- CompiledIdentityConstraint.cs
- RelationshipDetailsRow.cs
- AccessibleObject.cs
- ClusterRegistryConfigurationProvider.cs
- CopyNodeSetAction.cs
- GenericNameHandler.cs
- DataIdProcessor.cs
- DataGridViewEditingControlShowingEventArgs.cs
- XmlWellformedWriter.cs
- AutomationElementCollection.cs
- ConstructorBuilder.cs
- SqlAggregateChecker.cs
- UdpUtility.cs