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
- InvalidCommandTreeException.cs
- MD5.cs
- DetailsViewUpdatedEventArgs.cs
- ObjectKeyFrameCollection.cs
- HttpHandlersInstallComponent.cs
- CannotUnloadAppDomainException.cs
- DataStreams.cs
- HttpWriter.cs
- EventLogWatcher.cs
- DBSqlParserTableCollection.cs
- dataobject.cs
- XmlQuerySequence.cs
- ValidatorAttribute.cs
- RegexReplacement.cs
- PageCanvasSize.cs
- MemoryRecordBuffer.cs
- DataGridViewCellCollection.cs
- CodeObject.cs
- AnnotationHelper.cs
- EncoderParameter.cs
- FileUtil.cs
- ImageClickEventArgs.cs
- SoapReflectionImporter.cs
- Activator.cs
- WriteTimeStream.cs
- SerialPort.cs
- PointConverter.cs
- Attributes.cs
- IdnMapping.cs
- XmlMembersMapping.cs
- SafeRightsManagementSessionHandle.cs
- ReceiveMessageAndVerifySecurityAsyncResultBase.cs
- CapabilitiesUse.cs
- BaseCodePageEncoding.cs
- ToolboxComponentsCreatingEventArgs.cs
- Guid.cs
- SqlCacheDependency.cs
- PropVariant.cs
- KnownColorTable.cs
- ListBindingHelper.cs
- DrawToolTipEventArgs.cs
- RepeaterItemCollection.cs
- __ConsoleStream.cs
- DataGridViewCellLinkedList.cs
- ApplicationServiceManager.cs
- _ListenerRequestStream.cs
- CodeTypeMember.cs
- Viewport3DAutomationPeer.cs
- ExpressionConverter.cs
- XmlWellformedWriter.cs
- _TimerThread.cs
- TextTreeTextElementNode.cs
- GridViewPageEventArgs.cs
- WinHttpWebProxyFinder.cs
- EtwTrace.cs
- BooleanToVisibilityConverter.cs
- ChameleonKey.cs
- MetadataCacheItem.cs
- TrackBarRenderer.cs
- Viewport2DVisual3D.cs
- CompoundFileStorageReference.cs
- SmtpClient.cs
- ElementHost.cs
- TextOptionsInternal.cs
- CryptoStream.cs
- MetadataFile.cs
- XamlSerializerUtil.cs
- XhtmlBasicImageAdapter.cs
- StandardBindingReliableSessionElement.cs
- NumberFormatInfo.cs
- MimeBasePart.cs
- CodeConstructor.cs
- RoleManagerEventArgs.cs
- ScopeCompiler.cs
- Vector.cs
- PngBitmapDecoder.cs
- DbConnectionPoolGroup.cs
- RemoteWebConfigurationHost.cs
- webproxy.cs
- ThreadAbortException.cs
- EventLogEntryCollection.cs
- PresentationSource.cs
- DataIdProcessor.cs
- ReadOnlyDictionary.cs
- PeerSecurityHelpers.cs
- EnumValidator.cs
- IIS7ConfigurationLoader.cs
- ProbeDuplexAsyncResult.cs
- DateTimeStorage.cs
- EncryptedKeyHashIdentifierClause.cs
- ToolStripControlHost.cs
- OdbcConnection.cs
- XmlStreamNodeWriter.cs
- Table.cs
- MasterPageBuildProvider.cs
- WindowsContainer.cs
- SpoolingTask.cs
- ForeignKeyConstraint.cs
- CapabilitiesRule.cs
- AstNode.cs