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
- ConvertEvent.cs
- RenamedEventArgs.cs
- AuthenticatingEventArgs.cs
- CachedResourceDictionaryExtension.cs
- SecurityVerifiedMessage.cs
- DefaultMemberAttribute.cs
- securitycriticaldata.cs
- ListViewInsertionMark.cs
- TemplateControlParser.cs
- XmlSchemaComplexContentRestriction.cs
- Ray3DHitTestResult.cs
- HttpWebRequest.cs
- FormsAuthenticationCredentials.cs
- CodeCatchClauseCollection.cs
- LockedHandleGlyph.cs
- CodeCastExpression.cs
- LinqDataSourceView.cs
- DefinitionBase.cs
- SharedPerformanceCounter.cs
- ScrollPattern.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- Symbol.cs
- ConnectionPool.cs
- Registry.cs
- SelectionPatternIdentifiers.cs
- _NestedSingleAsyncResult.cs
- BrowserDefinition.cs
- _Semaphore.cs
- RoleGroupCollection.cs
- DataGridViewTextBoxColumn.cs
- NoneExcludedImageIndexConverter.cs
- StagingAreaInputItem.cs
- ErrorStyle.cs
- WebBrowserHelper.cs
- XmlIlVisitor.cs
- ResolveCriteria11.cs
- DataGridViewControlCollection.cs
- Triplet.cs
- RuleSetReference.cs
- CheckBoxField.cs
- XmlSchemaImporter.cs
- ProgressBarAutomationPeer.cs
- PipelineModuleStepContainer.cs
- PeerContact.cs
- QueueProcessor.cs
- SendKeys.cs
- CapabilitiesSection.cs
- GridViewAutomationPeer.cs
- ListViewInsertionMark.cs
- ExpressionWriter.cs
- StateMachineWorkflowInstance.cs
- FileChangesMonitor.cs
- AspCompat.cs
- IntSumAggregationOperator.cs
- OrderedDictionaryStateHelper.cs
- XPathLexer.cs
- HtmlControlDesigner.cs
- TableCellCollection.cs
- MatrixStack.cs
- XmlRawWriter.cs
- RuleInfoComparer.cs
- _CommandStream.cs
- EpmContentSerializer.cs
- AdditionalEntityFunctions.cs
- ExpressionWriter.cs
- DbMetaDataFactory.cs
- DataColumnCollection.cs
- TextElementEnumerator.cs
- _HelperAsyncResults.cs
- ListItemDetailViewAttribute.cs
- OpenTypeLayout.cs
- ShapingWorkspace.cs
- ScriptingAuthenticationServiceSection.cs
- SpecularMaterial.cs
- TableLayoutPanelCellPosition.cs
- DbConnectionPool.cs
- PropertySet.cs
- HeaderedItemsControl.cs
- LineMetrics.cs
- GenericAuthenticationEventArgs.cs
- UnknownWrapper.cs
- nulltextnavigator.cs
- TraceContextRecord.cs
- LinearGradientBrush.cs
- AnchoredBlock.cs
- TimelineCollection.cs
- BuiltInExpr.cs
- MarshalByValueComponent.cs
- ByteAnimationUsingKeyFrames.cs
- OdbcCommandBuilder.cs
- DataGridViewToolTip.cs
- DbConnectionPoolCounters.cs
- SqlMethodTransformer.cs
- SemanticTag.cs
- RequiredFieldValidator.cs
- ToolboxBitmapAttribute.cs
- NameNode.cs
- BCLDebug.cs
- SchemaRegistration.cs
- BlockCollection.cs