Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XPathScanner.cs
- XamlReader.cs
- UIPermission.cs
- DataGridItem.cs
- ButtonFieldBase.cs
- ComboBoxRenderer.cs
- DockingAttribute.cs
- DataGridViewComboBoxColumn.cs
- DrawingState.cs
- TrackingStringDictionary.cs
- GeneralTransform3DTo2D.cs
- XPathAncestorQuery.cs
- ExtensionSimplifierMarkupObject.cs
- ScriptingAuthenticationServiceSection.cs
- DefaultBinder.cs
- ColorContextHelper.cs
- BamlVersionHeader.cs
- TemplateXamlTreeBuilder.cs
- BmpBitmapEncoder.cs
- Panel.cs
- SafeLocalMemHandle.cs
- TypedTableGenerator.cs
- MailSettingsSection.cs
- TableSectionStyle.cs
- ProxyHwnd.cs
- WebDisplayNameAttribute.cs
- FileIOPermission.cs
- ToolboxItemCollection.cs
- EngineSite.cs
- HtmlControlPersistable.cs
- ActivationServices.cs
- ApplicationTrust.cs
- XmlNavigatorStack.cs
- InputLanguageProfileNotifySink.cs
- SerializerProvider.cs
- CompilerParameters.cs
- FocusManager.cs
- InternalConfigSettingsFactory.cs
- RootBrowserWindowProxy.cs
- FormatConvertedBitmap.cs
- COM2Properties.cs
- SHA1Cng.cs
- CustomErrorCollection.cs
- TemplateXamlTreeBuilder.cs
- NativeMethods.cs
- ToolStripPanelRenderEventArgs.cs
- EventManager.cs
- UnauthorizedAccessException.cs
- XpsFont.cs
- CategoryGridEntry.cs
- MetadataCacheItem.cs
- IndependentlyAnimatedPropertyMetadata.cs
- Serializer.cs
- DataDocumentXPathNavigator.cs
- StandardOleMarshalObject.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- WebBrowserEvent.cs
- SystemEvents.cs
- BindingExpressionUncommonField.cs
- TemplateControlCodeDomTreeGenerator.cs
- SEHException.cs
- BuildManager.cs
- DeadCharTextComposition.cs
- FirstQueryOperator.cs
- DrawingContextDrawingContextWalker.cs
- AggregateException.cs
- HebrewNumber.cs
- ConnectionProviderAttribute.cs
- UnhandledExceptionEventArgs.cs
- ThemeableAttribute.cs
- TemplateNameScope.cs
- ColumnResult.cs
- AuthenticationSection.cs
- SqlNodeTypeOperators.cs
- _SpnDictionary.cs
- DataBinding.cs
- MultiTouchSystemGestureLogic.cs
- WorkflowServiceNamespace.cs
- SynchronizedDispatch.cs
- ThreadInterruptedException.cs
- mediaclock.cs
- ModulesEntry.cs
- EmptyImpersonationContext.cs
- CryptographicAttribute.cs
- DataGridColumn.cs
- CodeArrayCreateExpression.cs
- OracleDataAdapter.cs
- StatusBar.cs
- GuidConverter.cs
- CookieHandler.cs
- GroupBox.cs
- EntityModelSchemaGenerator.cs
- WebException.cs
- CultureInfo.cs
- SRDisplayNameAttribute.cs
- MetabaseServerConfig.cs
- serverconfig.cs
- CharKeyFrameCollection.cs
- SecurityAlgorithmSuiteConverter.cs
- FontCollection.cs