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
- HostingEnvironment.cs
- TextModifierScope.cs
- DrawingContextDrawingContextWalker.cs
- ApplicationCommands.cs
- CmsInterop.cs
- ParallelTimeline.cs
- BinaryObjectReader.cs
- InputScopeManager.cs
- ButtonFlatAdapter.cs
- KeyToListMap.cs
- ResourcesGenerator.cs
- PathGeometry.cs
- ThreadExceptionEvent.cs
- SoapFault.cs
- SqlCommandSet.cs
- XmlSchemaCompilationSettings.cs
- BaseTreeIterator.cs
- ZipIOCentralDirectoryFileHeader.cs
- SqlMethodAttribute.cs
- MethodCallTranslator.cs
- ProxyGenerationError.cs
- ToolStripItemCollection.cs
- BuildProviderCollection.cs
- CommonObjectSecurity.cs
- HttpHeaderCollection.cs
- OpCellTreeNode.cs
- CreatingCookieEventArgs.cs
- SocketAddress.cs
- Resources.Designer.cs
- FieldNameLookup.cs
- SafeFileHandle.cs
- XPathBinder.cs
- HtmlGenericControl.cs
- CommandBindingCollection.cs
- HttpServerVarsCollection.cs
- TypedRowHandler.cs
- InputProviderSite.cs
- DispatcherExceptionEventArgs.cs
- RoutingExtension.cs
- Helpers.cs
- EntitySetBase.cs
- WorkflowRuntimeServiceElement.cs
- EventData.cs
- OleDbCommand.cs
- EventlogProvider.cs
- RootBrowserWindowProxy.cs
- CollectionViewGroupRoot.cs
- TrackBarRenderer.cs
- FormatVersion.cs
- DocComment.cs
- KeyboardNavigation.cs
- ContractComponent.cs
- HttpServerVarsCollection.cs
- XsdDuration.cs
- Root.cs
- MonitoringDescriptionAttribute.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- AssemblyBuilder.cs
- SliderAutomationPeer.cs
- Stroke2.cs
- WebServiceErrorEvent.cs
- RelOps.cs
- DesignerForm.cs
- DataServiceExpressionVisitor.cs
- UIntPtr.cs
- FontCacheUtil.cs
- DocumentViewerBaseAutomationPeer.cs
- WebPartCancelEventArgs.cs
- StackOverflowException.cs
- ProfileParameter.cs
- ReadOnlyHierarchicalDataSource.cs
- MemoryFailPoint.cs
- CodeCommentStatementCollection.cs
- SystemWebCachingSectionGroup.cs
- PackageRelationshipSelector.cs
- BidPrivateBase.cs
- Keyboard.cs
- BufferedGenericXmlSecurityToken.cs
- AuthenticationConfig.cs
- RestClientProxyHandler.cs
- SqlCommand.cs
- fixedPageContentExtractor.cs
- BooleanAnimationBase.cs
- AsymmetricKeyExchangeFormatter.cs
- FieldNameLookup.cs
- ApplicationFileParser.cs
- StrokeCollectionConverter.cs
- Base64Encoding.cs
- Latin1Encoding.cs
- ServiceThrottlingElement.cs
- XmlILStorageConverter.cs
- DropShadowEffect.cs
- BrowserCapabilitiesCompiler.cs
- Decimal.cs
- VirtualizingStackPanel.cs
- Part.cs
- CompilerErrorCollection.cs
- PairComparer.cs
- BitmapData.cs
- FontCollection.cs