Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / UncommonField.cs / 1305600 / 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
- EntitySqlQueryCacheKey.cs
- XmlChildEnumerator.cs
- Table.cs
- webproxy.cs
- BinaryWriter.cs
- ComponentEditorPage.cs
- XmlSchemaParticle.cs
- DataFormats.cs
- PrinterResolution.cs
- LayoutDump.cs
- WindowsFormsHelpers.cs
- EditorPartChrome.cs
- RemoteWebConfigurationHostStream.cs
- SchemaTypeEmitter.cs
- KeyFrames.cs
- SettingsPropertyCollection.cs
- CodeBinaryOperatorExpression.cs
- DataExpression.cs
- ObservableCollectionDefaultValueFactory.cs
- ProfessionalColorTable.cs
- BinHexDecoder.cs
- DirectoryLocalQuery.cs
- SafeBitVector32.cs
- HMACMD5.cs
- OrderablePartitioner.cs
- PasswordRecovery.cs
- StreamMarshaler.cs
- XmlReaderSettings.cs
- GorillaCodec.cs
- WebPartManagerInternals.cs
- DataSysAttribute.cs
- IdentifierElement.cs
- Int32Converter.cs
- PlaceHolder.cs
- RayHitTestParameters.cs
- TableCell.cs
- ComponentResourceManager.cs
- RuntimeConfigLKG.cs
- SchemaImporterExtensionsSection.cs
- ScrollItemPatternIdentifiers.cs
- HealthMonitoringSectionHelper.cs
- TextRenderer.cs
- TextModifierScope.cs
- SimpleHandlerFactory.cs
- XamlStream.cs
- PageThemeBuildProvider.cs
- LinkButton.cs
- ChannelDispatcherBase.cs
- Convert.cs
- QueueProcessor.cs
- IgnorePropertiesAttribute.cs
- ConditionValidator.cs
- LockedBorderGlyph.cs
- GenericWebPart.cs
- Repeater.cs
- RuleSettingsCollection.cs
- XmlReaderSettings.cs
- OptimisticConcurrencyException.cs
- FragmentQueryKB.cs
- IsolatedStorageException.cs
- CurrentChangingEventArgs.cs
- ListParaClient.cs
- Light.cs
- CodeTypeOfExpression.cs
- ImmutableAssemblyCacheEntry.cs
- GestureRecognizer.cs
- WebControl.cs
- HtmlContainerControl.cs
- HttpProfileBase.cs
- FixedFlowMap.cs
- CorrelationService.cs
- ServiceModelSecurityTokenRequirement.cs
- PeerNearMe.cs
- FSWPathEditor.cs
- XmlMemberMapping.cs
- BinHexEncoder.cs
- MemoryFailPoint.cs
- FileDialog.cs
- Internal.cs
- PointHitTestParameters.cs
- ConstructorNeedsTagAttribute.cs
- XmlSchemaObjectTable.cs
- InternalConfigRoot.cs
- ConditionalAttribute.cs
- EventEntry.cs
- ModelPropertyDescriptor.cs
- ThreadInterruptedException.cs
- ObjectComplexPropertyMapping.cs
- ImmComposition.cs
- TableLayoutStyleCollection.cs
- SafeRightsManagementQueryHandle.cs
- ToolStripSplitButton.cs
- RoleManagerSection.cs
- ThicknessConverter.cs
- OraclePermissionAttribute.cs
- EntityDataSourceContainerNameItem.cs
- ImageAttributes.cs
- SmtpDigestAuthenticationModule.cs
- OleAutBinder.cs
- HttpApplication.cs