Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / System / Windows / UncommonField.cs / 1 / UncommonField.cs
using System;
using System.Diagnostics;
using System.Security.Permissions;
using MS.Internal.WindowsBase; // for FriendAccessAllowed
namespace System.Windows
{
///
///
///
//CASRemoval:[StrongNameIdentityPermissionAttribute(SecurityAction.InheritanceDemand, PublicKey=Microsoft.Internal.BuildInfo.WCP_PUBLIC_KEY_STRING)]
[FriendAccessAllowed] // Built into Base, used by Core and Framework
internal class UncommonField
{
///
/// Create a new UncommonField.
///
public UncommonField() : this(default(T))
{
}
///
/// Create a new UncommonField.
///
/// The default value of the field.
public UncommonField(T defaultValue)
{
_defaultValue = defaultValue;
_hasBeenSet = false;
lock (DependencyProperty.Synchronized)
{
_globalIndex = DependencyProperty.GetUniqueGlobalIndex(null, null);
DependencyProperty.RegisteredPropertyList.Add();
}
}
///
/// Write the given value onto a DependencyObject instance.
///
/// The DependencyObject on which to set the value.
/// The value to set.
public void SetValue(DependencyObject instance, T value)
{
if (instance != null)
{
EntryIndex entryIndex = instance.LookupEntry(_globalIndex);
// Set the value if it's not the default, otherwise remove the value.
if (!object.ReferenceEquals(value, _defaultValue))
{
instance.SetEffectiveValue(entryIndex, null /* dp */, _globalIndex, null /* metadata */, value, BaseValueSourceInternal.Local);
_hasBeenSet = true;
}
else
{
instance.UnsetEffectiveValue(entryIndex, null /* dp */, null /* metadata */);
}
}
else
{
throw new ArgumentNullException("instance");
}
}
///
/// Read the value of this field on a DependencyObject instance.
///
/// The DependencyObject from which to get the value.
///
public T GetValue(DependencyObject instance)
{
if (instance != null)
{
if (_hasBeenSet)
{
EntryIndex entryIndex = instance.LookupEntry(_globalIndex);
if (entryIndex.Found)
{
object value = instance.EffectiveValues[entryIndex.Index].LocalValue;
if (value != DependencyProperty.UnsetValue)
{
return (T)value;
}
}
return _defaultValue;
}
else
{
return _defaultValue;
}
}
else
{
throw new ArgumentNullException("instance");
}
}
///
/// Clear this field from the given DependencyObject instance.
///
///
public void ClearValue(DependencyObject instance)
{
if (instance != null)
{
EntryIndex entryIndex = instance.LookupEntry(_globalIndex);
instance.UnsetEffectiveValue(entryIndex, null /* dp */, null /* metadata */);
}
else
{
throw new ArgumentNullException("instance");
}
}
internal int GlobalIndex
{
get
{
return _globalIndex;
}
}
#region Private Fields
private T _defaultValue;
private int _globalIndex;
private bool _hasBeenSet;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
using System.Diagnostics;
using System.Security.Permissions;
using MS.Internal.WindowsBase; // for FriendAccessAllowed
namespace System.Windows
{
///
///
///
//CASRemoval:[StrongNameIdentityPermissionAttribute(SecurityAction.InheritanceDemand, PublicKey=Microsoft.Internal.BuildInfo.WCP_PUBLIC_KEY_STRING)]
[FriendAccessAllowed] // Built into Base, used by Core and Framework
internal class UncommonField
{
///
/// Create a new UncommonField.
///
public UncommonField() : this(default(T))
{
}
///
/// Create a new UncommonField.
///
/// The default value of the field.
public UncommonField(T defaultValue)
{
_defaultValue = defaultValue;
_hasBeenSet = false;
lock (DependencyProperty.Synchronized)
{
_globalIndex = DependencyProperty.GetUniqueGlobalIndex(null, null);
DependencyProperty.RegisteredPropertyList.Add();
}
}
///
/// Write the given value onto a DependencyObject instance.
///
/// The DependencyObject on which to set the value.
/// The value to set.
public void SetValue(DependencyObject instance, T value)
{
if (instance != null)
{
EntryIndex entryIndex = instance.LookupEntry(_globalIndex);
// Set the value if it's not the default, otherwise remove the value.
if (!object.ReferenceEquals(value, _defaultValue))
{
instance.SetEffectiveValue(entryIndex, null /* dp */, _globalIndex, null /* metadata */, value, BaseValueSourceInternal.Local);
_hasBeenSet = true;
}
else
{
instance.UnsetEffectiveValue(entryIndex, null /* dp */, null /* metadata */);
}
}
else
{
throw new ArgumentNullException("instance");
}
}
///
/// Read the value of this field on a DependencyObject instance.
///
/// The DependencyObject from which to get the value.
///
public T GetValue(DependencyObject instance)
{
if (instance != null)
{
if (_hasBeenSet)
{
EntryIndex entryIndex = instance.LookupEntry(_globalIndex);
if (entryIndex.Found)
{
object value = instance.EffectiveValues[entryIndex.Index].LocalValue;
if (value != DependencyProperty.UnsetValue)
{
return (T)value;
}
}
return _defaultValue;
}
else
{
return _defaultValue;
}
}
else
{
throw new ArgumentNullException("instance");
}
}
///
/// Clear this field from the given DependencyObject instance.
///
///
public void ClearValue(DependencyObject instance)
{
if (instance != null)
{
EntryIndex entryIndex = instance.LookupEntry(_globalIndex);
instance.UnsetEffectiveValue(entryIndex, null /* dp */, null /* metadata */);
}
else
{
throw new ArgumentNullException("instance");
}
}
internal int GlobalIndex
{
get
{
return _globalIndex;
}
}
#region Private Fields
private T _defaultValue;
private int _globalIndex;
private bool _hasBeenSet;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Activator.cs
- InfoCardSchemas.cs
- WinFormsSecurity.cs
- ModifyActivitiesPropertyDescriptor.cs
- SAPIEngineTypes.cs
- TransactionsSectionGroup.cs
- AsyncDataRequest.cs
- CacheVirtualItemsEvent.cs
- TakeOrSkipWhileQueryOperator.cs
- ConfigurationValidatorAttribute.cs
- SafeEventLogWriteHandle.cs
- MetadataStore.cs
- FirstQueryOperator.cs
- EncryptedKeyIdentifierClause.cs
- COM2ExtendedTypeConverter.cs
- BufferModeSettings.cs
- MembershipUser.cs
- ProviderSettingsCollection.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- SessionPageStateSection.cs
- SafeNativeMethods.cs
- AttachedAnnotationChangedEventArgs.cs
- IsolationInterop.cs
- CommandField.cs
- SelectionManager.cs
- DbReferenceCollection.cs
- TextWriterTraceListener.cs
- InputReferenceExpression.cs
- ProxyWebPart.cs
- SecurityToken.cs
- DiscoveryClientDocuments.cs
- ImageInfo.cs
- login.cs
- ExpandCollapseProviderWrapper.cs
- NextPreviousPagerField.cs
- Publisher.cs
- TraceHandler.cs
- CapiHashAlgorithm.cs
- InstalledVoice.cs
- BufferModeSettings.cs
- AlgoModule.cs
- InputReport.cs
- CompareValidator.cs
- MD5.cs
- ExpressionsCollectionEditor.cs
- ApplicationException.cs
- __Error.cs
- MarshalByRefObject.cs
- ResourceSet.cs
- ObjectSet.cs
- ImageAutomationPeer.cs
- PolyBezierSegment.cs
- SiteMapNodeItemEventArgs.cs
- MarkupWriter.cs
- AttributeUsageAttribute.cs
- Normalization.cs
- DataObjectFieldAttribute.cs
- QilFunction.cs
- SmiEventStream.cs
- SubpageParaClient.cs
- Utilities.cs
- RandomNumberGenerator.cs
- DataSourceBooleanViewSchemaConverter.cs
- CardSpacePolicyElement.cs
- EFAssociationProvider.cs
- WebHttpSecurityElement.cs
- RelationHandler.cs
- StringResourceManager.cs
- TripleDES.cs
- OptimalTextSource.cs
- XmlDataImplementation.cs
- FontEmbeddingManager.cs
- DelegateHelpers.Generated.cs
- SignedInfo.cs
- DataGridViewRowCollection.cs
- InvalidPipelineStoreException.cs
- TypeConverterAttribute.cs
- BStrWrapper.cs
- ContextInformation.cs
- XPathParser.cs
- TypedReference.cs
- ElementHost.cs
- WeakReadOnlyCollection.cs
- Ops.cs
- TextPointer.cs
- XNodeNavigator.cs
- DateTime.cs
- EncodingNLS.cs
- oledbconnectionstring.cs
- ConfigDefinitionUpdates.cs
- ControlBuilder.cs
- QueuePathDialog.cs
- InternalControlCollection.cs
- DbConnectionPoolCounters.cs
- ToolStripComboBox.cs
- HttpRuntime.cs
- Soap.cs
- StringHelper.cs
- StopStoryboard.cs
- SafeNativeMethods.cs