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
- HostProtectionException.cs
- PlainXmlSerializer.cs
- RotateTransform3D.cs
- SqlRewriteScalarSubqueries.cs
- RemoteWebConfigurationHost.cs
- AccessViolationException.cs
- CommonGetThemePartSize.cs
- ButtonFlatAdapter.cs
- CaseInsensitiveOrdinalStringComparer.cs
- Size.cs
- ReadOnlyHierarchicalDataSource.cs
- ConfigXmlWhitespace.cs
- ToolBarDesigner.cs
- TimelineGroup.cs
- HotSpotCollectionEditor.cs
- WebPartEditVerb.cs
- WorkflowElementDialog.cs
- HttpCachePolicyElement.cs
- EventSource.cs
- ImmutableCollection.cs
- ChtmlCalendarAdapter.cs
- RawStylusActions.cs
- ConfigurationPermission.cs
- ListControlConvertEventArgs.cs
- X509Certificate.cs
- EnumerableRowCollection.cs
- TablePattern.cs
- TextRangeEdit.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- __Filters.cs
- InstanceDataCollection.cs
- TaskFileService.cs
- MarshalByValueComponent.cs
- IndexerNameAttribute.cs
- QueryRewriter.cs
- RuleSettings.cs
- MultiAsyncResult.cs
- PiiTraceSource.cs
- CodeGroup.cs
- LongValidatorAttribute.cs
- SqlCacheDependencySection.cs
- ProjectionAnalyzer.cs
- TextTrailingCharacterEllipsis.cs
- Trustee.cs
- DataSourceView.cs
- SessionStateItemCollection.cs
- exports.cs
- WinOEToolBoxItem.cs
- Timer.cs
- TripleDESCryptoServiceProvider.cs
- CodeCompiler.cs
- DataGridViewButtonColumn.cs
- ClientRolePrincipal.cs
- CompositeDataBoundControl.cs
- RotateTransform3D.cs
- storepermission.cs
- WindowsListViewItemStartMenu.cs
- AttributeEmitter.cs
- CodeTypeOfExpression.cs
- PolyLineSegmentFigureLogic.cs
- AppDomainShutdownMonitor.cs
- EdmError.cs
- SystemBrushes.cs
- TempFiles.cs
- StrokeCollection2.cs
- JoinTreeNode.cs
- PointHitTestParameters.cs
- StringExpressionSet.cs
- InfiniteTimeSpanConverter.cs
- DomainUpDown.cs
- CodeGenerator.cs
- ResourceProviderFactory.cs
- DropSource.cs
- ConfigurationStrings.cs
- GridViewColumnHeader.cs
- InfocardExtendedInformationEntry.cs
- HtmlTitle.cs
- JavaScriptString.cs
- InvalidComObjectException.cs
- Vector3dCollection.cs
- OleDbConnectionFactory.cs
- WsatServiceCertificate.cs
- CodeTypeDeclaration.cs
- FlatButtonAppearance.cs
- PassportAuthenticationEventArgs.cs
- TreeNodeCollection.cs
- EntitySqlQueryBuilder.cs
- Oid.cs
- CollectionViewGroupInternal.cs
- securitycriticaldataformultiplegetandset.cs
- SHA384Managed.cs
- AxParameterData.cs
- EntityWrapperFactory.cs
- AssertHelper.cs
- latinshape.cs
- MaterialGroup.cs
- StructuredTypeEmitter.cs
- RegexStringValidator.cs
- WeakEventTable.cs
- Wildcard.cs