Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- PageCanvasSize.cs
- x509utils.cs
- UserControlParser.cs
- ISAPIWorkerRequest.cs
- HtmlInputButton.cs
- DesignSurfaceServiceContainer.cs
- CacheOutputQuery.cs
- SQLMoney.cs
- ExtendedPropertyCollection.cs
- RoutedEventConverter.cs
- DisplayInformation.cs
- SqlRowUpdatedEvent.cs
- Pkcs9Attribute.cs
- XamlToRtfParser.cs
- GlyphCache.cs
- InstanceNotFoundException.cs
- SqlHelper.cs
- Label.cs
- WebPartConnectionsConnectVerb.cs
- Int32RectValueSerializer.cs
- QueryGeneratorBase.cs
- CanonicalXml.cs
- MsmqQueue.cs
- ImageCodecInfoPrivate.cs
- KeyboardEventArgs.cs
- ServiceDiscoveryElement.cs
- GetTokenRequest.cs
- SoapMessage.cs
- StringDictionaryWithComparer.cs
- TreeNodeClickEventArgs.cs
- PeerCredential.cs
- OuterGlowBitmapEffect.cs
- SqlGatherProducedAliases.cs
- CodeIndexerExpression.cs
- SharedPersonalizationStateInfo.cs
- CalendarDesigner.cs
- PrintController.cs
- COAUTHINFO.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- DecoderNLS.cs
- ToolStripDropDownClosingEventArgs.cs
- AlgoModule.cs
- FieldBuilder.cs
- ImageCodecInfoPrivate.cs
- HtmlInputFile.cs
- AssertUtility.cs
- ZoneButton.cs
- PackageStore.cs
- CryptoConfig.cs
- Mouse.cs
- RSAPKCS1SignatureFormatter.cs
- ContextDataSourceContextData.cs
- UniformGrid.cs
- WindowsMenu.cs
- StylusPointProperties.cs
- ActivationWorker.cs
- Bind.cs
- WindowsClaimSet.cs
- DBSqlParser.cs
- SQLInt64.cs
- SQLCharsStorage.cs
- CompositeCollectionView.cs
- AttributedMetaModel.cs
- CodeAttributeArgumentCollection.cs
- MemoryPressure.cs
- PolicyManager.cs
- XPathAncestorIterator.cs
- ComplexLine.cs
- XamlVector3DCollectionSerializer.cs
- BinaryUtilClasses.cs
- SchemaComplexType.cs
- TagMapInfo.cs
- MailWebEventProvider.cs
- IdentitySection.cs
- FileSystemWatcher.cs
- CookielessHelper.cs
- ObjectReferenceStack.cs
- ValueQuery.cs
- XmlUtilWriter.cs
- CheckBoxBaseAdapter.cs
- RequestCacheEntry.cs
- Int64Animation.cs
- Hashtable.cs
- WizardStepCollectionEditor.cs
- ToolStripItemRenderEventArgs.cs
- SingleConverter.cs
- ServiceHostFactory.cs
- BooleanToVisibilityConverter.cs
- SafeCloseHandleCritical.cs
- WebControl.cs
- LinearKeyFrames.cs
- TransformGroup.cs
- BreakRecordTable.cs
- PasswordTextNavigator.cs
- VirtualDirectoryMappingCollection.cs
- VSWCFServiceContractGenerator.cs
- ObjectViewEntityCollectionData.cs
- TabletDevice.cs
- NativeMethods.cs
- SrgsRuleRef.cs