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
- GifBitmapDecoder.cs
- NotificationContext.cs
- HttpAsyncResult.cs
- PrincipalPermission.cs
- StaticResourceExtension.cs
- SqlCacheDependency.cs
- TraversalRequest.cs
- ISAPIWorkerRequest.cs
- ConfigXmlCDataSection.cs
- FocusManager.cs
- ButtonPopupAdapter.cs
- CorrelationResolver.cs
- AssertFilter.cs
- XmlDataContract.cs
- COSERVERINFO.cs
- GPPOINT.cs
- localization.cs
- TextRenderer.cs
- CalendarKeyboardHelper.cs
- AnimationLayer.cs
- TextFindEngine.cs
- XmlQualifiedName.cs
- SectionInput.cs
- CategoryNameCollection.cs
- AuthenticateEventArgs.cs
- ContractReference.cs
- QilUnary.cs
- ProxyDataContractResolver.cs
- Vector3D.cs
- DesignerActionItemCollection.cs
- Repeater.cs
- ContentElement.cs
- EncryptedPackage.cs
- HttpCacheVaryByContentEncodings.cs
- ArrayWithOffset.cs
- DataColumnCollection.cs
- PhonemeConverter.cs
- FreeFormDesigner.cs
- FileSystemWatcher.cs
- WebPartUserCapability.cs
- InputBinding.cs
- IssuanceLicense.cs
- MissingSatelliteAssemblyException.cs
- LookupNode.cs
- TextTrailingWordEllipsis.cs
- SqlParameter.cs
- TokenBasedSet.cs
- ConnectionPoint.cs
- Crc32.cs
- Pair.cs
- ObservableCollectionDefaultValueFactory.cs
- PositiveTimeSpanValidatorAttribute.cs
- SourceItem.cs
- GuidelineSet.cs
- ConnectorDragDropGlyph.cs
- Misc.cs
- CqlIdentifiers.cs
- SimpleBitVector32.cs
- XsltSettings.cs
- ExpressionBindings.cs
- PropertyTab.cs
- SubpageParaClient.cs
- GlyphRunDrawing.cs
- CompiledQuery.cs
- Vector3DAnimationUsingKeyFrames.cs
- ScrollChangedEventArgs.cs
- TypedReference.cs
- IdlingCommunicationPool.cs
- CustomAttributeSerializer.cs
- CellParaClient.cs
- ConnectionInterfaceCollection.cs
- regiisutil.cs
- CqlBlock.cs
- InitiatorServiceModelSecurityTokenRequirement.cs
- DataBoundLiteralControl.cs
- UnitControl.cs
- HostingEnvironmentWrapper.cs
- xml.cs
- Rules.cs
- Misc.cs
- XmlLanguageConverter.cs
- ColumnClickEvent.cs
- Span.cs
- LabelLiteral.cs
- ConfigurationManagerInternal.cs
- ListDataHelper.cs
- StylusTip.cs
- XmlEntityReference.cs
- PropertiesTab.cs
- TypeValidationEventArgs.cs
- ElementFactory.cs
- WebSysDefaultValueAttribute.cs
- AsyncDataRequest.cs
- MenuItemCollection.cs
- ViewManagerAttribute.cs
- HtmlSelectionListAdapter.cs
- NumberSubstitution.cs
- Dump.cs
- BaseDataBoundControlDesigner.cs
- XmlSchemaChoice.cs