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 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
- HostProtectionPermission.cs
- WeakRefEnumerator.cs
- PageVisual.cs
- AudioLevelUpdatedEventArgs.cs
- DataGridViewButtonColumn.cs
- Fonts.cs
- EmptyEnumerator.cs
- ResourceProperty.cs
- UserControl.cs
- ModelItemExtensions.cs
- IndentedWriter.cs
- AnnotationResourceChangedEventArgs.cs
- DriveNotFoundException.cs
- _ListenerResponseStream.cs
- NamespaceCollection.cs
- PenLineJoinValidation.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- FontUnitConverter.cs
- querybuilder.cs
- TimerElapsedEvenArgs.cs
- RectangleConverter.cs
- SafeTokenHandle.cs
- RowVisual.cs
- BoolLiteral.cs
- DiagnosticTraceSource.cs
- EndpointIdentityExtension.cs
- RepeatBehavior.cs
- WindowsFormsDesignerOptionService.cs
- ButtonField.cs
- Geometry3D.cs
- Rect3DConverter.cs
- BamlMapTable.cs
- ToolStrip.cs
- ProfileManager.cs
- DataGridSortCommandEventArgs.cs
- FieldNameLookup.cs
- ParameterReplacerVisitor.cs
- sqlnorm.cs
- InternalControlCollection.cs
- sqlser.cs
- PeerEndPoint.cs
- CodeTypeDeclarationCollection.cs
- FixedPageAutomationPeer.cs
- Image.cs
- CTreeGenerator.cs
- MediaElementAutomationPeer.cs
- WebAdminConfigurationHelper.cs
- Grant.cs
- HandlerBase.cs
- ToggleButton.cs
- AliasExpr.cs
- UserPersonalizationStateInfo.cs
- DataBindingCollection.cs
- CheckBox.cs
- QilTernary.cs
- IconHelper.cs
- ScrollChrome.cs
- TypeElement.cs
- RawStylusInputCustomDataList.cs
- SourceInterpreter.cs
- TextSyndicationContentKindHelper.cs
- ClientSponsor.cs
- IgnoreFlushAndCloseStream.cs
- Wildcard.cs
- PropertyTab.cs
- BridgeDataRecord.cs
- WindowsScrollBar.cs
- MergeFilterQuery.cs
- SerializationInfoEnumerator.cs
- ListenerTraceUtility.cs
- IIS7WorkerRequest.cs
- DeviceSpecific.cs
- SamlDelegatingWriter.cs
- StateMachineExecutionState.cs
- MailDefinition.cs
- DecoderReplacementFallback.cs
- CanExpandCollapseAllConverter.cs
- StructuralType.cs
- ConstraintConverter.cs
- AnnotationResourceChangedEventArgs.cs
- WinFormsUtils.cs
- LinqDataSourceSelectEventArgs.cs
- XmlNotation.cs
- TriggerBase.cs
- ScrollBarAutomationPeer.cs
- NativeStructs.cs
- IdentitySection.cs
- ClientData.cs
- ToolStripSeparatorRenderEventArgs.cs
- MetabaseServerConfig.cs
- MsmqIntegrationChannelFactory.cs
- NetworkInterface.cs
- DataSourceSelectArguments.cs
- Itemizer.cs
- OdbcDataAdapter.cs
- TextCollapsingProperties.cs
- CurrentTimeZone.cs
- TextEncodedRawTextWriter.cs
- SqlBooleanMismatchVisitor.cs
- SimpleBitVector32.cs