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
- SqlTopReducer.cs
- TemplateEditingService.cs
- TextWriterTraceListener.cs
- VirtualPathUtility.cs
- XMLSchema.cs
- BezierSegment.cs
- NoResizeHandleGlyph.cs
- ProtocolsConfiguration.cs
- MetadataHelper.cs
- DescendantOverDescendantQuery.cs
- MessagePartDescriptionCollection.cs
- SoapCodeExporter.cs
- NominalTypeEliminator.cs
- XmlSchemaType.cs
- ArrowControl.xaml.cs
- SecurityManager.cs
- typedescriptorpermissionattribute.cs
- XmlWrappingReader.cs
- BridgeDataRecord.cs
- LocalIdKeyIdentifierClause.cs
- BrushValueSerializer.cs
- BrowserTree.cs
- Win32Native.cs
- GraphicsState.cs
- SqlSupersetValidator.cs
- XmlDigitalSignatureProcessor.cs
- PeerContact.cs
- Track.cs
- XmlUtil.cs
- Rijndael.cs
- PersistenceProviderFactory.cs
- RemotingException.cs
- RectConverter.cs
- ModelVisual3D.cs
- ProfileProvider.cs
- BitmapMetadata.cs
- ViewDesigner.cs
- RegexParser.cs
- EntityDescriptor.cs
- DataSourceProvider.cs
- DictionaryTraceRecord.cs
- RoleGroupCollection.cs
- PersonalizationStateInfo.cs
- SafeBitVector32.cs
- TaskFactory.cs
- FontSizeConverter.cs
- CollectionViewSource.cs
- DoubleLinkListEnumerator.cs
- CommentGlyph.cs
- DesigntimeLicenseContextSerializer.cs
- XmlSchemaAnnotation.cs
- HttpListenerResponse.cs
- ChooseAction.cs
- StorageMappingItemLoader.cs
- CanExecuteRoutedEventArgs.cs
- WindowsPrincipal.cs
- Material.cs
- SafeThemeHandle.cs
- MembershipPasswordException.cs
- FolderBrowserDialog.cs
- CodeTypeDeclarationCollection.cs
- _BufferOffsetSize.cs
- HtmlLabelAdapter.cs
- StructuralObject.cs
- XmlAnyAttributeAttribute.cs
- CapiSymmetricAlgorithm.cs
- OdbcPermission.cs
- TrustLevelCollection.cs
- CultureData.cs
- InputLanguage.cs
- ZipArchive.cs
- BamlStream.cs
- AssertUtility.cs
- HttpProfileGroupBase.cs
- SerializationTrace.cs
- ProfileService.cs
- Debug.cs
- ReadContentAsBinaryHelper.cs
- MemberDomainMap.cs
- RefExpr.cs
- EdmFunctions.cs
- selecteditemcollection.cs
- CacheDependency.cs
- ReferenceTypeElement.cs
- DataSourceSelectArguments.cs
- SerializationInfoEnumerator.cs
- DataControlButton.cs
- SharedConnectionListener.cs
- DelegateBodyWriter.cs
- PrtCap_Reader.cs
- UserControl.cs
- NodeFunctions.cs
- ServiceDescriptions.cs
- UpDownBase.cs
- HtmlWindowCollection.cs
- StoreContentChangedEventArgs.cs
- XmlRootAttribute.cs
- ToolboxBitmapAttribute.cs
- DataObjectSettingDataEventArgs.cs
- XslException.cs