Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / System.Runtime.DurableInstancing / System / Runtime / DurableInstancing / InstancePersistence.cs / 1305376 / InstancePersistence.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Runtime.DurableInstancing { using System; using System.Collections.Generic; using System.Runtime; using System.Xml.Linq; static class InstancePersistence { static readonly XNamespace activitiesCommandNamespace = XNamespace.Get("urn:schemas-microsoft-com:System.Activities.Persistence/command"); static readonly XNamespace activitiesEventNamespace = XNamespace.Get("urn:schemas-microsoft-com:System.Activities.Persistence/event"); internal static XNamespace ActivitiesCommandNamespace { get { return InstancePersistence.activitiesCommandNamespace; } } internal static XNamespace ActivitiesEventNamespace { get { return InstancePersistence.activitiesEventNamespace; } } public static void ValidatePropertyBag(this IDictionarybag) { bag.ValidatePropertyBag(false); } public static void ValidatePropertyBag(this IDictionary bag, bool allowDelete) { if (bag != null) { foreach (KeyValuePair property in bag) { property.ValidateProperty(allowDelete); } } } public static void ValidateProperty(this KeyValuePair property) { property.ValidateProperty(false); } public static void ValidateProperty(this KeyValuePair property, bool allowDelete) { if (property.Key == null) { throw Fx.Exception.AsError(new InvalidOperationException(SRCore.MetadataCannotContainNullKey)); } if (property.Value == null) { throw Fx.Exception.AsError(new InvalidOperationException(SRCore.MetadataCannotContainNullValue(property.Key))); } if (!allowDelete && property.Value.IsDeletedValue) { throw Fx.Exception.AsError(new InvalidOperationException(SRCore.InitialMetadataCannotBeDeleted(property.Key))); } } public static bool IsOptional(this InstanceValue value) { return (value.Options & InstanceValueOptions.Optional) != 0; } public static bool IsWriteOnly(this InstanceValue value) { return (value.Options & InstanceValueOptions.WriteOnly) != 0; } public static ReadOnlyDictionary ReadOnlyCopy(this IDictionary bag, bool allowWriteOnly) { if (bag != null && bag.Count > 0) { Dictionary copy = new Dictionary (bag.Count); foreach (KeyValuePair value in bag) { value.ValidateProperty(); if (!value.Value.IsWriteOnly()) { copy.Add(value.Key, value.Value); } else if (!allowWriteOnly) { throw Fx.Exception.AsError(new InvalidOperationException(SRCore.LoadedWriteOnlyValue)); } } return new ReadOnlyDictionary (copy, false); } else { return null; } } public static ReadOnlyDictionary ReadOnlyMergeInto(this IDictionary bag, IDictionary existing, bool allowWriteOnly) { Fx.Assert(existing == null || existing is ReadOnlyDictionary , "Should only be merging into other read-only dictionaries."); if (bag != null && bag.Count > 0) { Dictionary copy = existing == null ? new Dictionary (bag.Count) : new Dictionary (existing); foreach (KeyValuePair value in bag) { value.ValidateProperty(true); if (value.Value.IsDeletedValue) { copy.Remove(value.Key); } else if (!value.Value.IsWriteOnly()) { copy[value.Key] = value.Value; } else if (!allowWriteOnly) { throw Fx.Exception.AsError(new InvalidOperationException(SRCore.LoadedWriteOnlyValue)); } else { copy.Remove(value.Key); } } return new ReadOnlyDictionary (copy, false); } else { return (ReadOnlyDictionary ) existing; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridItemEventArgs.cs
- ConfigXmlWhitespace.cs
- RangeValidator.cs
- GlyphShapingProperties.cs
- CacheDependency.cs
- FontUnit.cs
- OleDbDataAdapter.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- HtmlTableCellCollection.cs
- EnumerableRowCollection.cs
- CryptoApi.cs
- EntityClassGenerator.cs
- StickyNoteHelper.cs
- SerializationSectionGroup.cs
- FontWeight.cs
- MemberHolder.cs
- TransformCryptoHandle.cs
- ObjectAnimationBase.cs
- AspCompat.cs
- MatrixKeyFrameCollection.cs
- KernelTypeValidation.cs
- HealthMonitoringSection.cs
- AsyncStreamReader.cs
- RegexCompilationInfo.cs
- BuildProviderUtils.cs
- JpegBitmapEncoder.cs
- DataGridLinkButton.cs
- Effect.cs
- DashStyle.cs
- PolicyException.cs
- Base64Stream.cs
- SqlDataSourceStatusEventArgs.cs
- ChangeDirector.cs
- UseAttributeSetsAction.cs
- QueryAccessibilityHelpEvent.cs
- GroupPartitionExpr.cs
- TreeNode.cs
- ReferentialConstraintRoleElement.cs
- EndEvent.cs
- ReadOnlyCollection.cs
- _BasicClient.cs
- HtmlEmptyTagControlBuilder.cs
- DataBoundControl.cs
- MILUtilities.cs
- SchemaImporterExtensionsSection.cs
- MimeParameter.cs
- SwitchLevelAttribute.cs
- TraceContextEventArgs.cs
- NetNamedPipeSecurity.cs
- IdentifierService.cs
- ProviderCommandInfoUtils.cs
- ToolStripItem.cs
- IteratorFilter.cs
- FixedSchema.cs
- SystemException.cs
- XmlSchemaType.cs
- ExpressionParser.cs
- Rotation3DAnimationUsingKeyFrames.cs
- XamlPathDataSerializer.cs
- BindingValueChangedEventArgs.cs
- filewebresponse.cs
- QilExpression.cs
- DefaultAutoFieldGenerator.cs
- ServiceDesigner.cs
- SchemaSetCompiler.cs
- MetaTable.cs
- CircleEase.cs
- FocusTracker.cs
- GetCardDetailsRequest.cs
- StringToken.cs
- HostedHttpContext.cs
- CodeCommentStatement.cs
- WebBaseEventKeyComparer.cs
- TaskExceptionHolder.cs
- SetterBaseCollection.cs
- TextMetrics.cs
- ExtendedProtectionPolicyElement.cs
- AccessorTable.cs
- Int32Converter.cs
- OptimizerPatterns.cs
- DbBuffer.cs
- DataControlButton.cs
- DefaultAssemblyResolver.cs
- DataMisalignedException.cs
- PtsContext.cs
- QilTargetType.cs
- ServiceTimeoutsBehavior.cs
- MarkedHighlightComponent.cs
- SchemaSetCompiler.cs
- WebPartConnectionsEventArgs.cs
- FrugalList.cs
- EventLog.cs
- NameValueSectionHandler.cs
- RequestResizeEvent.cs
- InputLanguage.cs
- GCHandleCookieTable.cs
- TextServicesHost.cs
- ExtenderControl.cs
- Page.cs
- LineGeometry.cs