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
- LineServicesCallbacks.cs
- ObjectDataSourceDisposingEventArgs.cs
- formatter.cs
- CodeDirectoryCompiler.cs
- ArgumentValidation.cs
- ToolStripContentPanelRenderEventArgs.cs
- SqlProviderServices.cs
- DataRecordObjectView.cs
- RunInstallerAttribute.cs
- TypeToStringValueConverter.cs
- HttpResponseHeader.cs
- Span.cs
- XamlFigureLengthSerializer.cs
- DetailsViewAutoFormat.cs
- ServicePointManagerElement.cs
- CollectionsUtil.cs
- CheckBox.cs
- TextLineBreak.cs
- SQLBoolean.cs
- __ComObject.cs
- AbandonedMutexException.cs
- AssemblyName.cs
- ListParagraph.cs
- ValidatorCollection.cs
- StrokeCollectionConverter.cs
- PermissionAttributes.cs
- ZoomingMessageFilter.cs
- NotifyInputEventArgs.cs
- UxThemeWrapper.cs
- ParameterToken.cs
- CompiledXpathExpr.cs
- DataListItem.cs
- StreamGeometryContext.cs
- StateMachineSubscriptionManager.cs
- PropertyBuilder.cs
- PolyBezierSegment.cs
- SizeChangedInfo.cs
- TextSelectionHelper.cs
- MappingMetadataHelper.cs
- FontFamily.cs
- ContentFileHelper.cs
- ListViewItemSelectionChangedEvent.cs
- LayoutEvent.cs
- HMACRIPEMD160.cs
- ECDiffieHellman.cs
- ExpressionList.cs
- SerializationObjectManager.cs
- StrokeRenderer.cs
- InstanceHandleReference.cs
- DeviceOverridableAttribute.cs
- CompositeKey.cs
- SafeProcessHandle.cs
- MessageLogger.cs
- LoginUtil.cs
- ManagementExtension.cs
- XhtmlBasicObjectListAdapter.cs
- AnonymousIdentificationSection.cs
- FacetChecker.cs
- CellLabel.cs
- DocumentEventArgs.cs
- MemberBinding.cs
- UnsafeNativeMethods.cs
- DataSourceExpression.cs
- XmlEntityReference.cs
- DataGridViewAdvancedBorderStyle.cs
- RoleBoolean.cs
- TextShapeableCharacters.cs
- BooleanStorage.cs
- ObjectManager.cs
- RangeBaseAutomationPeer.cs
- UnsafeNativeMethods.cs
- _LoggingObject.cs
- CoTaskMemUnicodeSafeHandle.cs
- Fonts.cs
- QuestionEventArgs.cs
- HtmlWindowCollection.cs
- XsdValidatingReader.cs
- SecureStringHasher.cs
- DocumentSchemaValidator.cs
- SpotLight.cs
- FontFamily.cs
- ThreadAbortException.cs
- CodeBlockBuilder.cs
- SectionRecord.cs
- SoapExtensionImporter.cs
- InternalPolicyElement.cs
- DataGridCell.cs
- ImplicitInputBrush.cs
- WorkflowViewManager.cs
- BatchWriter.cs
- httpserverutility.cs
- odbcmetadatacollectionnames.cs
- InvokeFunc.cs
- CodeMethodReturnStatement.cs
- TypeSystem.cs
- IndexedEnumerable.cs
- ContentWrapperAttribute.cs
- FrameworkName.cs
- ColumnMap.cs
- UpdatePanelTriggerCollection.cs