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
- TreeViewItemAutomationPeer.cs
- ZoneMembershipCondition.cs
- DictionaryBase.cs
- WindowsToolbarAsMenu.cs
- LinkButton.cs
- GestureRecognizer.cs
- ProtectedProviderSettings.cs
- VisualStyleRenderer.cs
- DateTimeStorage.cs
- EmptyStringExpandableObjectConverter.cs
- SqlProviderServices.cs
- ImageMapEventArgs.cs
- SelectionUIService.cs
- StringKeyFrameCollection.cs
- QuaternionIndependentAnimationStorage.cs
- PersonalizationProviderCollection.cs
- SamlNameIdentifierClaimResource.cs
- GlyphingCache.cs
- AsymmetricAlgorithm.cs
- DateTimeValueSerializer.cs
- SignatureSummaryDialog.cs
- DataTrigger.cs
- StringAttributeCollection.cs
- ProfileSettingsCollection.cs
- MSAAWinEventWrap.cs
- MdbDataFileEditor.cs
- BinaryFormatter.cs
- ServiceContractViewControl.cs
- _ListenerAsyncResult.cs
- HtmlMeta.cs
- GeometryConverter.cs
- TextParaLineResult.cs
- WebPartConnectionsConnectVerb.cs
- figurelength.cs
- ClientUtils.cs
- SQLInt32Storage.cs
- RuleProcessor.cs
- DataViewManager.cs
- TypeExtensionSerializer.cs
- AssemblyAttributes.cs
- coordinatorfactory.cs
- CurrencyWrapper.cs
- InputLanguageEventArgs.cs
- TcpConnectionPoolSettingsElement.cs
- HtmlHead.cs
- CompilerError.cs
- EntityFrameworkVersions.cs
- DataMemberFieldEditor.cs
- ServiceBusyException.cs
- SecurityUtils.cs
- UnionCodeGroup.cs
- DataControlField.cs
- WsdlInspector.cs
- FileEnumerator.cs
- JsonWriterDelegator.cs
- PasswordRecovery.cs
- QilGeneratorEnv.cs
- PrimitiveXmlSerializers.cs
- SdlChannelSink.cs
- DataView.cs
- DefaultAutoFieldGenerator.cs
- RecognizedAudio.cs
- ConfigXmlWhitespace.cs
- ExceptionUtil.cs
- _RequestCacheProtocol.cs
- AppModelKnownContentFactory.cs
- DynamicEndpointElement.cs
- HostedImpersonationContext.cs
- XPathChildIterator.cs
- AtlasWeb.Designer.cs
- NetCodeGroup.cs
- AssociationEndMember.cs
- DataMemberFieldEditor.cs
- BaseInfoTable.cs
- PolicyImporterElementCollection.cs
- TypeForwardedToAttribute.cs
- DoubleLinkListEnumerator.cs
- Random.cs
- LayoutTableCell.cs
- DataStreamFromComStream.cs
- XmlDownloadManager.cs
- SpecialFolderEnumConverter.cs
- QilNode.cs
- SmtpNetworkElement.cs
- ProjectedWrapper.cs
- RotationValidation.cs
- LinkArea.cs
- ZoneLinkButton.cs
- TextTreeTextElementNode.cs
- _ScatterGatherBuffers.cs
- TraceHelpers.cs
- EdmRelationshipRoleAttribute.cs
- WebPartTracker.cs
- ExceptionUtil.cs
- CookieParameter.cs
- EnvelopedSignatureTransform.cs
- ObjectDisposedException.cs
- MetadataException.cs
- TextEndOfSegment.cs
- FormatControl.cs