Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- StaticDataManager.cs
- XamlInt32CollectionSerializer.cs
- PageCatalogPart.cs
- SqlServices.cs
- EncoderBestFitFallback.cs
- ArrangedElementCollection.cs
- DecoderNLS.cs
- DbParameterCollectionHelper.cs
- WinEventTracker.cs
- ToolBar.cs
- TypeExtension.cs
- RectangleF.cs
- AssemblyAttributes.cs
- ArrayExtension.cs
- DataStorage.cs
- XmlWellformedWriter.cs
- EdmScalarPropertyAttribute.cs
- DataGridColumnCollection.cs
- FamilyMapCollection.cs
- InvalidEnumArgumentException.cs
- httpapplicationstate.cs
- ExpressionBindingCollection.cs
- SmtpReplyReader.cs
- AutomationPeer.cs
- XmlQueryContext.cs
- KnownTypesProvider.cs
- FieldBuilder.cs
- DocumentGrid.cs
- ConnectionConsumerAttribute.cs
- FilterFactory.cs
- thaishape.cs
- WindowManager.cs
- KerberosSecurityTokenAuthenticator.cs
- CodeDomDesignerLoader.cs
- ConfigXmlElement.cs
- DataGridRelationshipRow.cs
- TypeBuilder.cs
- CheckableControlBaseAdapter.cs
- SamlSerializer.cs
- CaseInsensitiveComparer.cs
- AtomicFile.cs
- ServerValidateEventArgs.cs
- PageRequestManager.cs
- XmlParserContext.cs
- GridViewRowPresenterBase.cs
- MemberCollection.cs
- FileReader.cs
- DataGridRow.cs
- SiteMapDataSourceView.cs
- loginstatus.cs
- ProvideValueServiceProvider.cs
- EdmComplexPropertyAttribute.cs
- BitmapEffectInput.cs
- XmlValidatingReaderImpl.cs
- GeometryGroup.cs
- CodeTypeOfExpression.cs
- TypeListConverter.cs
- MatrixUtil.cs
- Positioning.cs
- ValidatingReaderNodeData.cs
- CategoryEditor.cs
- WindowsListViewScroll.cs
- TextElement.cs
- ApplicationSecurityInfo.cs
- RadioButtonFlatAdapter.cs
- SafeNativeMethods.cs
- BitmapEffectGroup.cs
- ScrollProviderWrapper.cs
- DataSet.cs
- MultipleViewProviderWrapper.cs
- DiagnosticsConfigurationHandler.cs
- SessionIDManager.cs
- InputLanguageSource.cs
- OletxTransactionManager.cs
- AlternationConverter.cs
- GraphicsPathIterator.cs
- XPathNavigatorKeyComparer.cs
- PolicyStatement.cs
- XmlTypeAttribute.cs
- QueryConverter.cs
- Mapping.cs
- StringBuilder.cs
- PageCodeDomTreeGenerator.cs
- FrameworkReadOnlyPropertyMetadata.cs
- PropertyTab.cs
- TextBoxBase.cs
- ClientBuildManagerCallback.cs
- AnnotationComponentChooser.cs
- InternalMappingException.cs
- FixedSOMImage.cs
- PeerDefaultCustomResolverClient.cs
- StackBuilderSink.cs
- RowUpdatingEventArgs.cs
- MinMaxParagraphWidth.cs
- Properties.cs
- SoapObjectWriter.cs
- RijndaelManaged.cs
- ClientTargetSection.cs
- DispatchChannelSink.cs
- ExpressionWriter.cs