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
- LogicalTreeHelper.cs
- CriticalHandle.cs
- TdsValueSetter.cs
- SmtpNtlmAuthenticationModule.cs
- ProxyHelper.cs
- VisualTarget.cs
- ResourceReferenceKeyNotFoundException.cs
- SmiRecordBuffer.cs
- RSAProtectedConfigurationProvider.cs
- OleDbPropertySetGuid.cs
- InheritedPropertyChangedEventArgs.cs
- PageWrapper.cs
- UxThemeWrapper.cs
- XpsViewerException.cs
- SQLInt16Storage.cs
- XmlSerializerAssemblyAttribute.cs
- SystemInfo.cs
- SizeKeyFrameCollection.cs
- WorkflowMarkupSerializer.cs
- QueryContinueDragEvent.cs
- FrameSecurityDescriptor.cs
- FontWeight.cs
- TaskFactory.cs
- ErrorHandlingReceiver.cs
- GenericIdentity.cs
- MailHeaderInfo.cs
- TextRangeProviderWrapper.cs
- ParagraphResult.cs
- AttributeAction.cs
- TypefaceMap.cs
- SerializationHelper.cs
- SimpleHandlerBuildProvider.cs
- EventDescriptor.cs
- ClientRoleProvider.cs
- XPathBuilder.cs
- isolationinterop.cs
- LinqDataSourceContextEventArgs.cs
- MemoryStream.cs
- WmlLiteralTextAdapter.cs
- StrokeFIndices.cs
- BaseAppDomainProtocolHandler.cs
- StylusPoint.cs
- SyncOperationState.cs
- ComplusEndpointConfigContainer.cs
- ExtensionWindowHeader.cs
- InheritanceRules.cs
- FileUtil.cs
- DiagnosticTrace.cs
- RawStylusInput.cs
- KeyboardNavigation.cs
- DataGridViewCellMouseEventArgs.cs
- CheckBoxList.cs
- TypeDelegator.cs
- MetadataCacheItem.cs
- HtmlWindowCollection.cs
- shaperfactoryquerycachekey.cs
- Int32Collection.cs
- OleAutBinder.cs
- IndicShape.cs
- MouseActionConverter.cs
- MessageEncodingBindingElementImporter.cs
- StylusEventArgs.cs
- WindowsIdentity.cs
- DoubleUtil.cs
- UmAlQuraCalendar.cs
- parserscommon.cs
- FrameDimension.cs
- SecurityCredentialsManager.cs
- Graphics.cs
- ProfileGroupSettingsCollection.cs
- DbConnectionPoolIdentity.cs
- CodeThrowExceptionStatement.cs
- StreamHelper.cs
- AutoGeneratedFieldProperties.cs
- ArrayConverter.cs
- InputQueue.cs
- SchemaImporterExtensionElement.cs
- Enlistment.cs
- HandlerBase.cs
- SqlInternalConnection.cs
- DefaultTypeArgumentAttribute.cs
- ListChangedEventArgs.cs
- WrapPanel.cs
- ObjectCloneHelper.cs
- DirectoryInfo.cs
- ClonableStack.cs
- ToggleProviderWrapper.cs
- CharEnumerator.cs
- DefaultObjectSerializer.cs
- Rect.cs
- SmiRecordBuffer.cs
- FillErrorEventArgs.cs
- SafeRightsManagementPubHandle.cs
- GC.cs
- QueryAsyncResult.cs
- HatchBrush.cs
- OleDbPermission.cs
- LongTypeConverter.cs
- BoolLiteral.cs
- BuildProvider.cs