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
- CustomAttributeFormatException.cs
- _ChunkParse.cs
- ValidationEventArgs.cs
- DataGridViewColumnEventArgs.cs
- PointHitTestResult.cs
- AvTraceDetails.cs
- SerializationUtility.cs
- KnownBoxes.cs
- ActiveDocumentEvent.cs
- EndEvent.cs
- ObjectViewFactory.cs
- X509Certificate.cs
- InvocationExpression.cs
- TextOptions.cs
- ManagementObjectCollection.cs
- ShortcutKeysEditor.cs
- XhtmlConformanceSection.cs
- LocatorGroup.cs
- StyleXamlParser.cs
- AdornerPresentationContext.cs
- TypefaceMetricsCache.cs
- ListItemCollection.cs
- LinqDataSourceHelper.cs
- VisualCollection.cs
- KeyFrames.cs
- EventProviderWriter.cs
- LogicalChannel.cs
- TdsParserStaticMethods.cs
- ObjectParameter.cs
- UriTemplateCompoundPathSegment.cs
- FontClient.cs
- EventLogEntryCollection.cs
- ResourcePermissionBaseEntry.cs
- Atom10FormatterFactory.cs
- ExpanderAutomationPeer.cs
- StreamGeometry.cs
- TiffBitmapEncoder.cs
- XPathQilFactory.cs
- CodeSnippetExpression.cs
- ProviderCollection.cs
- ViewCellRelation.cs
- RecoverInstanceLocksCommand.cs
- SqlMethodAttribute.cs
- XmlTextAttribute.cs
- TabControl.cs
- CounterSetInstance.cs
- TextElementEnumerator.cs
- Thumb.cs
- OleStrCAMarshaler.cs
- EntityDataSourceChangedEventArgs.cs
- PropertyMapper.cs
- WindowsStatic.cs
- FieldToken.cs
- BitmapSource.cs
- ForeignConstraint.cs
- SHA1Cng.cs
- DockProviderWrapper.cs
- RadioButtonFlatAdapter.cs
- ReadWriteSpinLock.cs
- Point3DCollection.cs
- XmlSequenceWriter.cs
- ToolStripComboBox.cs
- TemplatedMailWebEventProvider.cs
- CodeFieldReferenceExpression.cs
- ProfilePropertyMetadata.cs
- XsdValidatingReader.cs
- HtmlButton.cs
- HideDisabledControlAdapter.cs
- DocumentSequence.cs
- processwaithandle.cs
- DataGridViewCellStyle.cs
- EnumType.cs
- ExpressionSelection.cs
- documentsequencetextcontainer.cs
- ReadOnlyTernaryTree.cs
- LicFileLicenseProvider.cs
- Itemizer.cs
- CrossSiteScriptingValidation.cs
- IndexerNameAttribute.cs
- RetrieveVirtualItemEventArgs.cs
- WindowInteropHelper.cs
- HtmlMeta.cs
- NonSerializedAttribute.cs
- LoginCancelEventArgs.cs
- GetPageNumberCompletedEventArgs.cs
- ImageSource.cs
- SymbolResolver.cs
- Visual3DCollection.cs
- PropertyToken.cs
- UIHelper.cs
- ChangeDirector.cs
- ApplicationSecurityInfo.cs
- BaseWebProxyFinder.cs
- PartManifestEntry.cs
- NTAccount.cs
- CapabilitiesUse.cs
- VisualStateManager.cs
- Update.cs
- DataGridViewCheckBoxColumn.cs
- InputBinding.cs