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
- RequestCachePolicyConverter.cs
- WebPartDisplayModeEventArgs.cs
- ActivityCodeDomSerializer.cs
- StatusBarPanel.cs
- ClipboardProcessor.cs
- AssemblyAttributes.cs
- JsonFormatMapping.cs
- ExtenderHelpers.cs
- TreeViewHitTestInfo.cs
- BitmapCacheBrush.cs
- XamlGridLengthSerializer.cs
- DateTimeConverter.cs
- X509Extension.cs
- BookmarkScopeHandle.cs
- Point3DConverter.cs
- ZoneIdentityPermission.cs
- RangeValueProviderWrapper.cs
- XmlUTF8TextWriter.cs
- PeerDuplexChannel.cs
- TransformCryptoHandle.cs
- ACE.cs
- ChannelDispatcher.cs
- HttpInputStream.cs
- XPathParser.cs
- SqlDataSource.cs
- XmlCDATASection.cs
- PropertyGeneratedEventArgs.cs
- MatrixTransform.cs
- ControlHelper.cs
- panel.cs
- StrongTypingException.cs
- SimpleModelProvider.cs
- SmtpSection.cs
- OleDbSchemaGuid.cs
- FrameworkRichTextComposition.cs
- ExtensionQuery.cs
- _FtpControlStream.cs
- ObjectViewListener.cs
- SqlVisitor.cs
- SqlBuffer.cs
- DriveNotFoundException.cs
- AutoResetEvent.cs
- RegexCaptureCollection.cs
- HitTestWithPointDrawingContextWalker.cs
- TabletDeviceInfo.cs
- SmtpFailedRecipientException.cs
- SyndicationDeserializer.cs
- FlowDocumentFormatter.cs
- XPathScanner.cs
- SiteMapProvider.cs
- _ConnectionGroup.cs
- ScriptResourceInfo.cs
- HandleValueEditor.cs
- ArgumentException.cs
- IImplicitResourceProvider.cs
- AppearanceEditorPart.cs
- SimpleLine.cs
- XmlILAnnotation.cs
- DesignTimeTemplateParser.cs
- LessThan.cs
- ControlCachePolicy.cs
- EmptyEnumerable.cs
- DesignTimeTemplateParser.cs
- CompositeActivityDesigner.cs
- CallbackException.cs
- TextWriter.cs
- XmlSerializerNamespaces.cs
- SmiConnection.cs
- HandleExceptionArgs.cs
- SvcMapFileSerializer.cs
- DataGridViewLinkCell.cs
- TypeInfo.cs
- CryptoConfig.cs
- SchemaImporterExtensionElement.cs
- Point3DAnimationUsingKeyFrames.cs
- Nullable.cs
- DataGridViewRowHeaderCell.cs
- WriterOutput.cs
- LowerCaseStringConverter.cs
- StylusEventArgs.cs
- LoginName.cs
- HttpResponse.cs
- RTLAwareMessageBox.cs
- RepeatButtonAutomationPeer.cs
- ConfigXmlReader.cs
- ToolStripDropDownMenu.cs
- XmlNamespaceMapping.cs
- SettingsContext.cs
- FolderBrowserDialog.cs
- TextMarkerSource.cs
- SchemaEntity.cs
- ContextProperty.cs
- PointConverter.cs
- ExtendedProperty.cs
- SectionRecord.cs
- OperationGenerator.cs
- DesignTimeValidationFeature.cs
- Baml6ConstructorInfo.cs
- ConfigurationLockCollection.cs
- _ListenerAsyncResult.cs