Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------- // 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 IDictionary bag) { 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
- ParallelTimeline.cs
- HTTPNotFoundHandler.cs
- VisemeEventArgs.cs
- X509IssuerSerialKeyIdentifierClause.cs
- DataSet.cs
- StrokeIntersection.cs
- WorkflowMarkupElementEventArgs.cs
- PaintValueEventArgs.cs
- WebPartsPersonalizationAuthorization.cs
- SettingsSection.cs
- ExpressionBuilderCollection.cs
- WrappedIUnknown.cs
- Expressions.cs
- TraceHandlerErrorFormatter.cs
- ComplexLine.cs
- XmlSchemaAll.cs
- NopReturnReader.cs
- HtmlPanelAdapter.cs
- recordstatefactory.cs
- DynamicEndpoint.cs
- DPTypeDescriptorContext.cs
- TdsRecordBufferSetter.cs
- BaseProcessProtocolHandler.cs
- GeneratedView.cs
- DefaultValueTypeConverter.cs
- DefaultDiscoveryServiceExtension.cs
- ChtmlTextWriter.cs
- CheckBoxRenderer.cs
- VersionedStreamOwner.cs
- OletxEnlistment.cs
- ContentPlaceHolderDesigner.cs
- RegexCode.cs
- PtsHelper.cs
- KeyConstraint.cs
- XmlLoader.cs
- BitmapEffectGroup.cs
- StringBuilder.cs
- EastAsianLunisolarCalendar.cs
- _StreamFramer.cs
- CodeTypeMember.cs
- WebPartConnectionsConfigureVerb.cs
- MimeMapping.cs
- HitTestParameters.cs
- StrokeCollection2.cs
- ColumnMap.cs
- ProfileSettings.cs
- BitmapEffectDrawing.cs
- SystemException.cs
- QueryTaskGroupState.cs
- BooleanProjectedSlot.cs
- ArraySet.cs
- WebControl.cs
- WindowsFormsSectionHandler.cs
- SettingsPropertyValue.cs
- JumpTask.cs
- InternalEnumValidator.cs
- ContextMarshalException.cs
- SiteMapPath.cs
- RowUpdatedEventArgs.cs
- BaseTemplateParser.cs
- XmlReflectionImporter.cs
- ButtonChrome.cs
- TableLayoutCellPaintEventArgs.cs
- autovalidator.cs
- NamespaceEmitter.cs
- SimpleApplicationHost.cs
- FormattedTextSymbols.cs
- EditorBrowsableAttribute.cs
- IsolatedStorage.cs
- NativeCompoundFileAPIs.cs
- ZoneButton.cs
- EmptyEnumerator.cs
- RoleManagerSection.cs
- isolationinterop.cs
- ContextStaticAttribute.cs
- XmlSchemaSequence.cs
- XmlSequenceWriter.cs
- RectangleConverter.cs
- ConnectionConsumerAttribute.cs
- LinkedDataMemberFieldEditor.cs
- ListViewItemMouseHoverEvent.cs
- DbParameterCollectionHelper.cs
- KerberosTicketHashIdentifierClause.cs
- FilteredDataSetHelper.cs
- CompatibleIComparer.cs
- NamedPipeAppDomainProtocolHandler.cs
- DeadCharTextComposition.cs
- PeekCompletedEventArgs.cs
- Timer.cs
- SchemaCollectionPreprocessor.cs
- RestHandlerFactory.cs
- SafeProcessHandle.cs
- DataGridViewCellCollection.cs
- SafeProcessHandle.cs
- XmlSerializer.cs
- StateMachineAction.cs
- SharedConnectionListener.cs
- NativeMethods.cs
- WCFBuildProvider.cs
- PolicyVersionConverter.cs