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
- ItemsPresenter.cs
- RIPEMD160Managed.cs
- EmptyReadOnlyDictionaryInternal.cs
- MonthChangedEventArgs.cs
- _OverlappedAsyncResult.cs
- Soap.cs
- Debug.cs
- HttpInputStream.cs
- FormViewDeleteEventArgs.cs
- SqlCaseSimplifier.cs
- JsonQNameDataContract.cs
- ListParagraph.cs
- Part.cs
- HtmlAnchor.cs
- AccessedThroughPropertyAttribute.cs
- SystemInfo.cs
- FieldInfo.cs
- TrackingProfile.cs
- ConfigurationCollectionAttribute.cs
- unsafeIndexingFilterStream.cs
- ApplicationFileParser.cs
- ClientOptions.cs
- ApplicationSecurityManager.cs
- CollectionChangeEventArgs.cs
- Switch.cs
- GlobalizationAssembly.cs
- SQLInt64.cs
- UIntPtr.cs
- DockProviderWrapper.cs
- WebBrowserNavigatedEventHandler.cs
- FormsAuthentication.cs
- CatalogZoneBase.cs
- BufferedGraphicsManager.cs
- ResourceWriter.cs
- SmiMetaDataProperty.cs
- SafeNativeMethods.cs
- ViewLoader.cs
- XLinq.cs
- WindowsEditBoxRange.cs
- NotFiniteNumberException.cs
- IERequestCache.cs
- CompatibleComparer.cs
- HelloMessage11.cs
- BinaryWriter.cs
- MLangCodePageEncoding.cs
- SegmentInfo.cs
- WindowsUpDown.cs
- XmlSerializer.cs
- PageParserFilter.cs
- ZoneLinkButton.cs
- CaseInsensitiveComparer.cs
- odbcmetadatafactory.cs
- OrderByQueryOptionExpression.cs
- ConditionChanges.cs
- oledbmetadatacollectionnames.cs
- FlowDocumentReader.cs
- OneOfElement.cs
- BrowserDefinition.cs
- CodeConstructor.cs
- ToolStripDropDownClosingEventArgs.cs
- XmlNodeList.cs
- SendKeys.cs
- ImageCodecInfoPrivate.cs
- Rotation3DAnimation.cs
- SelectedDatesCollection.cs
- CodeStatementCollection.cs
- StatusCommandUI.cs
- NamedPipeTransportSecurity.cs
- METAHEADER.cs
- ComponentDispatcherThread.cs
- NameValueConfigurationElement.cs
- SafeBitVector32.cs
- InfoCardServiceInstallComponent.cs
- ImageButton.cs
- StringConverter.cs
- RuleSettings.cs
- Button.cs
- ArrayConverter.cs
- BitHelper.cs
- WmlCalendarAdapter.cs
- DataGridViewCheckBoxCell.cs
- DataGridViewCellValidatingEventArgs.cs
- CodeStatement.cs
- AppendHelper.cs
- UnionCodeGroup.cs
- ColorConvertedBitmapExtension.cs
- HScrollProperties.cs
- webclient.cs
- ContainsSearchOperator.cs
- Regex.cs
- SqlConnectionPoolGroupProviderInfo.cs
- DataTableNewRowEvent.cs
- GenericIdentity.cs
- ArcSegment.cs
- GiveFeedbackEvent.cs
- KnownTypesProvider.cs
- VectorCollectionConverter.cs
- Accessible.cs
- RSAOAEPKeyExchangeDeformatter.cs
- _FtpDataStream.cs