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
- Rotation3DAnimation.cs
- SqlPersonalizationProvider.cs
- InfoCardAsymmetricCrypto.cs
- CodeDesigner.cs
- ValidatingReaderNodeData.cs
- NativeStructs.cs
- WebDescriptionAttribute.cs
- FactoryRecord.cs
- ResolvedKeyFrameEntry.cs
- MediaPlayerState.cs
- WebPartTracker.cs
- DoubleKeyFrameCollection.cs
- ProvidersHelper.cs
- StringFreezingAttribute.cs
- ArraySortHelper.cs
- PixelFormats.cs
- AllMembershipCondition.cs
- Header.cs
- HMACSHA384.cs
- prompt.cs
- GraphicsContainer.cs
- ToolStripSeparator.cs
- CustomErrorsSection.cs
- ExeConfigurationFileMap.cs
- XmlSchemaDocumentation.cs
- ReliableChannelBinder.cs
- ServiceHandle.cs
- EditorPartChrome.cs
- ConditionCollection.cs
- DataSpaceManager.cs
- SevenBitStream.cs
- DataGridViewCellEventArgs.cs
- XomlDesignerLoader.cs
- GcSettings.cs
- BulletDecorator.cs
- CubicEase.cs
- MSAANativeProvider.cs
- QilName.cs
- WebEventCodes.cs
- GridLengthConverter.cs
- WebHttpElement.cs
- MetadataItem.cs
- XmlReflectionImporter.cs
- JobDuplex.cs
- WebPartConnectionsConnectVerb.cs
- TextLineBreak.cs
- DES.cs
- NetTcpBindingCollectionElement.cs
- CellRelation.cs
- ComMethodElementCollection.cs
- DataTableCollection.cs
- RequiredAttributeAttribute.cs
- MetadataUtilsSmi.cs
- EntityDataReader.cs
- SequenceNumber.cs
- InsufficientExecutionStackException.cs
- DateTimeFormatInfoScanner.cs
- _TransmitFileOverlappedAsyncResult.cs
- ActiveXContainer.cs
- DefaultProxySection.cs
- ToolStripArrowRenderEventArgs.cs
- CalendarDateRange.cs
- ExpressionNormalizer.cs
- SkipQueryOptionExpression.cs
- BCLDebug.cs
- QueryStringHandler.cs
- Vector3D.cs
- AppDomainUnloadedException.cs
- ChannelDispatcherBase.cs
- ModelMemberCollection.cs
- PreProcessInputEventArgs.cs
- OrderedDictionaryStateHelper.cs
- DelegatingConfigHost.cs
- StateItem.cs
- FrameworkPropertyMetadata.cs
- CalendarItem.cs
- MenuEventArgs.cs
- MessageFormatterConverter.cs
- MachineKeySection.cs
- OleDbWrapper.cs
- FontUnit.cs
- MsmqQueue.cs
- SpotLight.cs
- MouseGestureValueSerializer.cs
- ManagementQuery.cs
- ServiceObjectContainer.cs
- FormatConvertedBitmap.cs
- BitmapEffect.cs
- UnsafeNativeMethods.cs
- DataBindingCollection.cs
- RelationshipSet.cs
- Mappings.cs
- URLIdentityPermission.cs
- InputEventArgs.cs
- SudsCommon.cs
- HtmlForm.cs
- CompensatableSequenceActivity.cs
- mansign.cs
- SourceFileBuildProvider.cs
- ListViewInsertEventArgs.cs