Code:
/ 4.0 / 4.0 / 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. // ---------------------------------------------------------------------------- // 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
- ContextActivityUtils.cs
- RegexInterpreter.cs
- DBParameter.cs
- ClientRolePrincipal.cs
- sqlpipe.cs
- ErrorWrapper.cs
- HideDisabledControlAdapter.cs
- SkinBuilder.cs
- CacheHelper.cs
- RawStylusSystemGestureInputReport.cs
- FrameworkElement.cs
- PanelContainerDesigner.cs
- MeasureData.cs
- CodeCatchClause.cs
- WebHttpBindingCollectionElement.cs
- XmlNavigatorFilter.cs
- TextViewElement.cs
- CqlIdentifiers.cs
- HtmlImageAdapter.cs
- MailWriter.cs
- EvidenceTypeDescriptor.cs
- CookielessHelper.cs
- HyperLinkStyle.cs
- RolePrincipal.cs
- BaseProcessor.cs
- Unit.cs
- ItemMap.cs
- PointHitTestResult.cs
- MessageRpc.cs
- MenuItem.cs
- JsonEncodingStreamWrapper.cs
- MsmqInputChannelListener.cs
- SupportsEventValidationAttribute.cs
- CursorInteropHelper.cs
- EndpointDiscoveryMetadata.cs
- Visual3D.cs
- XmlSchemaCompilationSettings.cs
- ClientConfigurationSystem.cs
- HttpApplication.cs
- DocumentViewerConstants.cs
- DbgCompiler.cs
- ImageAttributes.cs
- SqlFactory.cs
- UidManager.cs
- Parameter.cs
- Activator.cs
- WorkflowMessageEventArgs.cs
- ObjectTypeMapping.cs
- ContextMenuService.cs
- WebScriptMetadataMessage.cs
- DuplicateMessageDetector.cs
- HitTestParameters.cs
- HtmlImageAdapter.cs
- AdapterDictionary.cs
- ErrorHandler.cs
- ITextView.cs
- DataGridViewControlCollection.cs
- _ProxyChain.cs
- CommandManager.cs
- PageHandlerFactory.cs
- wgx_exports.cs
- DetailsViewInsertEventArgs.cs
- SettingsPropertyWrongTypeException.cs
- DbConnectionPoolCounters.cs
- CustomWebEventKey.cs
- FileDialog.cs
- WindowAutomationPeer.cs
- SqlClientFactory.cs
- DoubleUtil.cs
- DataGridViewRowPostPaintEventArgs.cs
- BindUriHelper.cs
- WriteLineDesigner.xaml.cs
- XmlElementList.cs
- AdPostCacheSubstitution.cs
- SerializationSectionGroup.cs
- VectorCollection.cs
- IxmlLineInfo.cs
- UnsafeNativeMethods.cs
- RowSpanVector.cs
- TextEditorContextMenu.cs
- HttpListenerElement.cs
- LayoutTable.cs
- IConvertible.cs
- ConnectAlgorithms.cs
- EntityDescriptor.cs
- SelectionItemPattern.cs
- SelectionRange.cs
- SchemaTypeEmitter.cs
- BulletedList.cs
- DataGridViewComboBoxCell.cs
- Int16.cs
- FontWeightConverter.cs
- CompatibleIComparer.cs
- SByteConverter.cs
- WeakEventTable.cs
- TagMapInfo.cs
- ContainerFilterService.cs
- WindowHideOrCloseTracker.cs
- GenerateTemporaryAssemblyTask.cs
- LinqDataSourceDisposeEventArgs.cs