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
- WebPartVerbsEventArgs.cs
- TrustManagerMoreInformation.cs
- StringFunctions.cs
- SqlNotificationEventArgs.cs
- EndOfStreamException.cs
- RichTextBoxConstants.cs
- XPathNodeList.cs
- TypeExtensions.cs
- X509LogoTypeExtension.cs
- reliableinputsessionchannel.cs
- TextView.cs
- Int32KeyFrameCollection.cs
- ETagAttribute.cs
- HtmlTextArea.cs
- FormsAuthenticationConfiguration.cs
- MultilineStringConverter.cs
- SelfSignedCertificate.cs
- Typeface.cs
- HMACRIPEMD160.cs
- ScrollChangedEventArgs.cs
- Stack.cs
- GeneralTransform3D.cs
- ExpressionBindings.cs
- PreviewPrintController.cs
- XmlSortKey.cs
- PlatformNotSupportedException.cs
- Resources.Designer.cs
- UIPermission.cs
- SchemaCollectionCompiler.cs
- SamlAssertionKeyIdentifierClause.cs
- PropertyEmitterBase.cs
- GridSplitterAutomationPeer.cs
- WindowsListViewItemStartMenu.cs
- SqlAliasesReferenced.cs
- PointAnimationUsingKeyFrames.cs
- SqlBooleanMismatchVisitor.cs
- WindowsSpinner.cs
- PolyQuadraticBezierSegment.cs
- StructuralObject.cs
- HeaderUtility.cs
- PrinterResolution.cs
- Header.cs
- PseudoWebRequest.cs
- UserPersonalizationStateInfo.cs
- SafeThreadHandle.cs
- SoapInteropTypes.cs
- ReadWriteObjectLock.cs
- FontFamilyValueSerializer.cs
- XamlPathDataSerializer.cs
- WorkflowRuntimeServiceElementCollection.cs
- XmlDataSource.cs
- XmlQueryCardinality.cs
- TransactionFlowOption.cs
- AggregateNode.cs
- SizeAnimation.cs
- Axis.cs
- SqlVersion.cs
- WebBrowserNavigatedEventHandler.cs
- DeclaredTypeValidatorAttribute.cs
- OleDbRowUpdatedEvent.cs
- Tile.cs
- UserControlParser.cs
- AnimationLayer.cs
- ThrowOnMultipleAssignment.cs
- InternalDispatchObject.cs
- Section.cs
- BufferedMessageData.cs
- ConnectionPoint.cs
- RowsCopiedEventArgs.cs
- SafeTokenHandle.cs
- SQLGuidStorage.cs
- EditorPartChrome.cs
- StorageAssociationSetMapping.cs
- RenameRuleObjectDialog.Designer.cs
- XmlSchemaAnnotation.cs
- HandoffBehavior.cs
- IItemProperties.cs
- Validator.cs
- ElementNotEnabledException.cs
- ScrollEvent.cs
- MethodBuilderInstantiation.cs
- ElementMarkupObject.cs
- CompositeDuplexElement.cs
- BamlLocalizationDictionary.cs
- Label.cs
- XDeferredAxisSource.cs
- RepeaterItemCollection.cs
- coordinatorfactory.cs
- WindowsTitleBar.cs
- TextEditorSpelling.cs
- UserControlAutomationPeer.cs
- EncryptedData.cs
- ConfigurationElementProperty.cs
- XmlNamespaceMapping.cs
- Decoder.cs
- XmlIlGenerator.cs
- OleDbPermission.cs
- TypeConverterValueSerializer.cs
- DataRowCollection.cs
- StringReader.cs