Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Rules / RuleDefinitions.cs / 1305376 / RuleDefinitions.cs
// ---------------------------------------------------------------------------- // Copyright (C) 2006 Microsoft Corporation All Rights Reserved // --------------------------------------------------------------------------- #define CODE_ANALYSIS using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Workflow.ComponentModel; namespace System.Workflow.Activities.Rules { #region class RuleDefinitions public sealed class RuleDefinitions : IWorkflowChangeDiff { [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")] public static readonly DependencyProperty RuleDefinitionsProperty = DependencyProperty.RegisterAttached("RuleDefinitions", typeof(RuleDefinitions), typeof(RuleDefinitions), new PropertyMetadata(null, DependencyPropertyOptions.Metadata, new GetValueOverride(OnGetRuleConditions), null, new Attribute[] { new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden) })); private RuleConditionCollection conditions; private RuleSetCollection ruleSets; private bool runtimeInitialized; [NonSerialized] private object syncLock = new object(); [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public RuleConditionCollection Conditions { get { if (this.conditions == null) this.conditions = new RuleConditionCollection(); return conditions; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public RuleSetCollection RuleSets { get { if (this.ruleSets == null) this.ruleSets = new RuleSetCollection(); return this.ruleSets; } } internal static object OnGetRuleConditions(DependencyObject dependencyObject) { if (dependencyObject == null) throw new ArgumentNullException("dependencyObject"); RuleDefinitions rules = dependencyObject.GetValueBase(RuleDefinitions.RuleDefinitionsProperty) as RuleDefinitions; if (rules != null) return rules; Activity rootActivity = dependencyObject as Activity; if (rootActivity.Parent == null) { rules = ConditionHelper.GetRuleDefinitionsFromManifest(rootActivity.GetType()); if (rules != null) dependencyObject.SetValue(RuleDefinitions.RuleDefinitionsProperty, rules); } return rules; } internal void OnRuntimeInitialized() { lock (syncLock) { if (runtimeInitialized) return; Conditions.OnRuntimeInitialized(); RuleSets.OnRuntimeInitialized(); runtimeInitialized = true; } } #region IWorkflowChangeDiff Members public IListDiff(object originalDefinition, object changedDefinition) { RuleDefinitions originalRules = originalDefinition as RuleDefinitions; RuleDefinitions changedRules = changedDefinition as RuleDefinitions; if ((originalRules == null) || (changedRules == null)) return new List (); IList cdiff = Conditions.Diff(originalRules.Conditions, changedRules.Conditions); IList rdiff = RuleSets.Diff(originalRules.RuleSets, changedRules.RuleSets); // quick optimization -- if no condition changes, simply return the ruleset changes if (cdiff.Count == 0) return rdiff; // merge ruleset changes into condition changes for (int i = 0; i < rdiff.Count; ++i) { cdiff.Add(rdiff[i]); } return cdiff; } #endregion internal RuleDefinitions Clone() { RuleDefinitions newRuleDefinitions = new RuleDefinitions(); if (this.ruleSets != null) { newRuleDefinitions.ruleSets = new RuleSetCollection(); foreach (RuleSet r in this.ruleSets) newRuleDefinitions.ruleSets.Add(r.Clone()); } if (this.conditions != null) { newRuleDefinitions.conditions = new RuleConditionCollection(); foreach (RuleCondition r in this.conditions) newRuleDefinitions.conditions.Add(r.Clone()); } return newRuleDefinitions; } } #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
- StylusButtonEventArgs.cs
- _NTAuthentication.cs
- RawUIStateInputReport.cs
- PolyLineSegment.cs
- Decoder.cs
- SoapConverter.cs
- ParseNumbers.cs
- TriState.cs
- MultipleCopiesCollection.cs
- Soap.cs
- XmlParserContext.cs
- ACL.cs
- SqlCacheDependency.cs
- JsonEncodingStreamWrapper.cs
- SubclassTypeValidator.cs
- Deflater.cs
- Int32Rect.cs
- Metadata.cs
- Lookup.cs
- IriParsingElement.cs
- RoleService.cs
- CodeSubDirectoriesCollection.cs
- DiscoveryClientDocuments.cs
- LateBoundBitmapDecoder.cs
- MultipartContentParser.cs
- IERequestCache.cs
- SetterTriggerConditionValueConverter.cs
- AsyncWaitHandle.cs
- ParallelEnumerableWrapper.cs
- Floater.cs
- LayoutTable.cs
- XmlBoundElement.cs
- SystemInformation.cs
- __TransparentProxy.cs
- Decimal.cs
- ToolStripItemRenderEventArgs.cs
- CommandBinding.cs
- AccessViolationException.cs
- EventPrivateKey.cs
- WmpBitmapDecoder.cs
- GridErrorDlg.cs
- InvalidComObjectException.cs
- TextBlock.cs
- RuntimeHandles.cs
- Accessible.cs
- GeometryCollection.cs
- StandardBindingImporter.cs
- DataGridTablesFactory.cs
- OdbcInfoMessageEvent.cs
- UIntPtr.cs
- MappedMetaModel.cs
- AsyncOperationManager.cs
- RowBinding.cs
- IIS7UserPrincipal.cs
- Signature.cs
- BinaryNegotiation.cs
- RoleGroup.cs
- DSASignatureFormatter.cs
- PropertyGrid.cs
- XmlILOptimizerVisitor.cs
- TextTreeFixupNode.cs
- ServiceEndpointElement.cs
- ViewStateException.cs
- EntityType.cs
- UidPropertyAttribute.cs
- BitmapEffectDrawing.cs
- DataBindEngine.cs
- ResourceReferenceExpression.cs
- FocusWithinProperty.cs
- ResourceExpressionBuilder.cs
- documentsequencetextview.cs
- ProtectedConfiguration.cs
- DataBindingsDialog.cs
- FileDialogCustomPlace.cs
- IISUnsafeMethods.cs
- IncrementalCompileAnalyzer.cs
- AddingNewEventArgs.cs
- HtmlWindow.cs
- Converter.cs
- RegistrationContext.cs
- Point.cs
- NotifyParentPropertyAttribute.cs
- Set.cs
- MethodCallTranslator.cs
- SafeFindHandle.cs
- FilterQueryOptionExpression.cs
- MediaScriptCommandRoutedEventArgs.cs
- LocalizationParserHooks.cs
- EventSourceCreationData.cs
- XmlUnspecifiedAttribute.cs
- XmlSchemaSimpleContentExtension.cs
- BaseDataList.cs
- FileVersion.cs
- Viewport3DAutomationPeer.cs
- Vector.cs
- TemplateEditingFrame.cs
- PasswordRecovery.cs
- TrustManager.cs
- PasswordRecovery.cs
- Win32.cs