Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- TextTrailingWordEllipsis.cs
- UserControl.cs
- EditorBrowsableAttribute.cs
- DescriptionCreator.cs
- _Semaphore.cs
- UxThemeWrapper.cs
- MethodBuilder.cs
- MobileListItem.cs
- ProfileGroupSettings.cs
- MenuAdapter.cs
- CFStream.cs
- BitmapVisualManager.cs
- PassportIdentity.cs
- LOSFormatter.cs
- BaseWebProxyFinder.cs
- ClientSideProviderDescription.cs
- FlowDocumentReader.cs
- SQLBoolean.cs
- SectionXmlInfo.cs
- BaseValidatorDesigner.cs
- ECDiffieHellmanCng.cs
- HandleRef.cs
- Attachment.cs
- RequestCacheManager.cs
- WebRequestModulesSection.cs
- DataErrorValidationRule.cs
- FileLevelControlBuilderAttribute.cs
- MembershipSection.cs
- EmptyEnumerable.cs
- WmlMobileTextWriter.cs
- ConfigurationStrings.cs
- UnmanagedMarshal.cs
- SourceSwitch.cs
- WindowsListViewScroll.cs
- HandlerBase.cs
- NotificationContext.cs
- IntellisenseTextBox.cs
- UnsafeNativeMethods.cs
- HttpApplication.cs
- GeneralTransform3DTo2D.cs
- RefExpr.cs
- StrokeNodeOperations.cs
- TypeSystem.cs
- FrameworkContentElement.cs
- TableLayoutPanel.cs
- ModuleBuilder.cs
- Decimal.cs
- Debugger.cs
- PrePostDescendentsWalker.cs
- BindingEntityInfo.cs
- WebBrowserContainer.cs
- ProfileService.cs
- VisualCollection.cs
- ECDiffieHellmanPublicKey.cs
- PageBuildProvider.cs
- Journaling.cs
- ProviderConnectionPointCollection.cs
- ServiceNameElementCollection.cs
- SoapFault.cs
- SelectionGlyphBase.cs
- ParsedAttributeCollection.cs
- OrthographicCamera.cs
- Calendar.cs
- StrokeSerializer.cs
- XsdBuilder.cs
- ChildChangedEventArgs.cs
- rsa.cs
- ConnectivityStatus.cs
- RelationshipType.cs
- Highlights.cs
- DockAndAnchorLayout.cs
- SqlEnums.cs
- NativeMethods.cs
- PerformanceCounterPermission.cs
- SchemaNamespaceManager.cs
- FigureHelper.cs
- ActivityBindForm.Designer.cs
- HttpInputStream.cs
- WindowsListViewGroupSubsetLink.cs
- HelpOperationInvoker.cs
- ToolStripStatusLabel.cs
- StrongNamePublicKeyBlob.cs
- AttachmentCollection.cs
- ParallelEnumerable.cs
- GenericIdentity.cs
- Vector3DKeyFrameCollection.cs
- XmlBindingWorker.cs
- Perspective.cs
- XmlAttributes.cs
- AspCompat.cs
- UnsafeNativeMethods.cs
- _Semaphore.cs
- FileSystemWatcher.cs
- UTF7Encoding.cs
- InitializationEventAttribute.cs
- CounterCreationDataCollection.cs
- MinimizableAttributeTypeConverter.cs
- Membership.cs
- PrintPreviewGraphics.cs
- BoolLiteral.cs