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
- PowerEase.cs
- OracleTimeSpan.cs
- ListBox.cs
- MediaTimeline.cs
- SecurityElement.cs
- DynamicUpdateCommand.cs
- KeyPressEvent.cs
- XmlObjectSerializerWriteContextComplex.cs
- DefaultValueConverter.cs
- MouseEvent.cs
- messageonlyhwndwrapper.cs
- ExpandoClass.cs
- WeakEventManager.cs
- WindowsTokenRoleProvider.cs
- BaseTemplateBuildProvider.cs
- RoutedEvent.cs
- ItemContainerGenerator.cs
- DataObjectCopyingEventArgs.cs
- NativeMethods.cs
- FunctionNode.cs
- TimelineGroup.cs
- PackageRelationship.cs
- COM2ICategorizePropertiesHandler.cs
- Cursor.cs
- VirtualizingStackPanel.cs
- TypeValidationEventArgs.cs
- Model3D.cs
- CodeGenerator.cs
- SqlDataReaderSmi.cs
- ConnectionProviderAttribute.cs
- Brushes.cs
- FixedDocument.cs
- ButtonChrome.cs
- XmlSerializationWriter.cs
- ActiveXSite.cs
- NamespaceList.cs
- DefaultExpressionVisitor.cs
- EventLogReader.cs
- ServiceParser.cs
- PathFigureCollectionValueSerializer.cs
- FormViewAutoFormat.cs
- ToolBar.cs
- XmlTextAttribute.cs
- ObfuscationAttribute.cs
- TimeoutTimer.cs
- ToolStrip.cs
- XmlNamespaceDeclarationsAttribute.cs
- IndexerNameAttribute.cs
- CodeGenerator.cs
- X509Chain.cs
- TCEAdapterGenerator.cs
- WindowsBrush.cs
- RequestCacheEntry.cs
- ReferencedType.cs
- ColumnHeaderConverter.cs
- MultiByteCodec.cs
- ResourceAssociationSetEnd.cs
- HtmlTableRow.cs
- NullableBoolConverter.cs
- SessionChannels.cs
- FragmentQuery.cs
- NetworkAddressChange.cs
- WebEventTraceProvider.cs
- EventSourceCreationData.cs
- Function.cs
- ExtendedPropertyDescriptor.cs
- TypedReference.cs
- InitializeCorrelation.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- CreateParams.cs
- SchemaType.cs
- FillRuleValidation.cs
- Thumb.cs
- SecurityTokenException.cs
- smtppermission.cs
- CapabilitiesPattern.cs
- FlowDocumentPaginator.cs
- CodePageEncoding.cs
- ListViewContainer.cs
- _NegoState.cs
- Application.cs
- CrossContextChannel.cs
- RoleGroupCollectionEditor.cs
- EventMappingSettings.cs
- CustomWebEventKey.cs
- Rule.cs
- HttpCachePolicyElement.cs
- RegistrationServices.cs
- ContentOnlyMessage.cs
- DbDataRecord.cs
- ProcessProtocolHandler.cs
- RecommendedAsConfigurableAttribute.cs
- SmiMetaData.cs
- BodyWriter.cs
- EventMappingSettings.cs
- MasterPageParser.cs
- CrossSiteScriptingValidation.cs
- DtrList.cs
- CellTreeNode.cs
- XmlILIndex.cs