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
- OracleDataAdapter.cs
- SemaphoreFullException.cs
- PropertyGroupDescription.cs
- XmlDataLoader.cs
- CreateUserWizardStep.cs
- ContentIterators.cs
- XsltSettings.cs
- ActivityExecutionContextCollection.cs
- Math.cs
- ImpersonationContext.cs
- QueryOperator.cs
- QueryResponse.cs
- WebCodeGenerator.cs
- MarshalByRefObject.cs
- FrameworkTemplate.cs
- Win32MouseDevice.cs
- ShaderEffect.cs
- SqlVersion.cs
- PersonalizationProvider.cs
- ListView.cs
- InkPresenter.cs
- SecurityTokenException.cs
- ErrorFormatterPage.cs
- ExpressionBinding.cs
- CodeAccessPermission.cs
- SettingsSection.cs
- TogglePattern.cs
- TemplateBindingExpression.cs
- BitmapFrameEncode.cs
- ImportException.cs
- TextFragmentEngine.cs
- PersistenceProvider.cs
- InputLanguageEventArgs.cs
- ActiveXContainer.cs
- IISUnsafeMethods.cs
- NamespaceInfo.cs
- ConfigurationSettings.cs
- ChangeConflicts.cs
- TdsValueSetter.cs
- BufferModeSettings.cs
- RSAPKCS1KeyExchangeFormatter.cs
- Hash.cs
- ConnectionPointGlyph.cs
- QueryParameter.cs
- ThreadAbortException.cs
- ThreadExceptionDialog.cs
- arclist.cs
- TemplateBindingExtensionConverter.cs
- SymbolMethod.cs
- NullRuntimeConfig.cs
- EventLogEntryCollection.cs
- DeobfuscatingStream.cs
- unitconverter.cs
- PriorityQueue.cs
- GridPatternIdentifiers.cs
- DbDataRecord.cs
- CheckBoxPopupAdapter.cs
- OrCondition.cs
- TypeToken.cs
- CheckBoxList.cs
- WebCodeGenerator.cs
- EntityDataSourceDesigner.cs
- Win32Native.cs
- CatalogZoneBase.cs
- _DomainName.cs
- SchemaComplexType.cs
- _DynamicWinsockMethods.cs
- CaseStatementSlot.cs
- AggregateNode.cs
- SmtpDateTime.cs
- ResourceAssociationSetEnd.cs
- CompilerTypeWithParams.cs
- UpdateEventArgs.cs
- QueueAccessMode.cs
- ProfileEventArgs.cs
- controlskin.cs
- DiagnosticsConfiguration.cs
- ToolStripSystemRenderer.cs
- _ListenerAsyncResult.cs
- RoutedEvent.cs
- ProbeMatchesMessageCD1.cs
- ContainerTracking.cs
- MemoryStream.cs
- DragStartedEventArgs.cs
- DataRelation.cs
- VerificationAttribute.cs
- unitconverter.cs
- RootProfilePropertySettingsCollection.cs
- CompilerScopeManager.cs
- BezierSegment.cs
- ReferencedType.cs
- NGCSerializationManagerAsync.cs
- MappingException.cs
- WebPartMinimizeVerb.cs
- SendSecurityHeader.cs
- WorkflowTraceTransfer.cs
- VersionedStreamOwner.cs
- DispatchWrapper.cs
- TrustManagerMoreInformation.cs
- DataBoundControlAdapter.cs