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
- XmlTextWriter.cs
- GeneralTransform3DTo2D.cs
- GroupItemAutomationPeer.cs
- NextPreviousPagerField.cs
- PropertyRef.cs
- IgnoreSection.cs
- documentsequencetextcontainer.cs
- SectionUpdates.cs
- CustomAttributeFormatException.cs
- XmlWhitespace.cs
- HttpRuntimeSection.cs
- Vector.cs
- User.cs
- DataGridViewLinkCell.cs
- HuffmanTree.cs
- ProviderIncompatibleException.cs
- TerminatorSinks.cs
- WCFBuildProvider.cs
- TextEditorSpelling.cs
- FilterQueryOptionExpression.cs
- HttpEncoder.cs
- MemoryRecordBuffer.cs
- ObjectAnimationBase.cs
- WindowsSysHeader.cs
- OpCellTreeNode.cs
- columnmapfactory.cs
- SecureStringHasher.cs
- HashCodeCombiner.cs
- RootNamespaceAttribute.cs
- ContentPlaceHolder.cs
- TraceListener.cs
- PageThemeParser.cs
- CompressEmulationStream.cs
- ProfileEventArgs.cs
- XmlSchemaImporter.cs
- WebBrowserUriTypeConverter.cs
- ClientRuntimeConfig.cs
- BitmapEffectGroup.cs
- Types.cs
- XmlProcessingInstruction.cs
- ImportFileRequest.cs
- NativeRecognizer.cs
- DataSvcMapFileSerializer.cs
- StylusShape.cs
- DeviceContext.cs
- SpecularMaterial.cs
- CopyOfAction.cs
- SpotLight.cs
- cookieexception.cs
- PeerUnsafeNativeMethods.cs
- TrackingRecordPreFilter.cs
- CategoryNameCollection.cs
- DecoderNLS.cs
- AddressHeaderCollection.cs
- FileAuthorizationModule.cs
- StylusEditingBehavior.cs
- TypeListConverter.cs
- ResourceKey.cs
- HttpsTransportBindingElement.cs
- WebMessageEncoderFactory.cs
- SessionPageStateSection.cs
- FixedTextContainer.cs
- WindowsScroll.cs
- TreeViewHitTestInfo.cs
- RefreshResponseInfo.cs
- CompositeDataBoundControl.cs
- ColumnPropertiesGroup.cs
- EdmToObjectNamespaceMap.cs
- KeyboardEventArgs.cs
- HtmlInputSubmit.cs
- SQLMoney.cs
- HttpResponseInternalWrapper.cs
- LongSumAggregationOperator.cs
- LicenseContext.cs
- RewritingProcessor.cs
- CompiledQuery.cs
- VScrollProperties.cs
- FileAccessException.cs
- PagedDataSource.cs
- ScopedMessagePartSpecification.cs
- OperandQuery.cs
- CurrentChangingEventArgs.cs
- DesignTimeVisibleAttribute.cs
- EdmSchemaAttribute.cs
- IdentifierCollection.cs
- StyleTypedPropertyAttribute.cs
- XmlSchemaExporter.cs
- ParameterSubsegment.cs
- versioninfo.cs
- RolePrincipal.cs
- PropertyEmitterBase.cs
- MouseActionConverter.cs
- ZipFileInfoCollection.cs
- XsdDateTime.cs
- ToolZone.cs
- IntSecurity.cs
- WebPartEditorApplyVerb.cs
- ISFClipboardData.cs
- Profiler.cs
- IFormattable.cs