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
- Ipv6Element.cs
- PackagePart.cs
- ObjectDataSourceWizardForm.cs
- LinkLabel.cs
- XmlBuffer.cs
- SecurityContextTokenCache.cs
- ConstraintManager.cs
- PowerStatus.cs
- GPPOINT.cs
- FormConverter.cs
- StrokeCollectionConverter.cs
- MultiPageTextView.cs
- BlurEffect.cs
- NotifyInputEventArgs.cs
- SqlClientMetaDataCollectionNames.cs
- WindowsListViewGroupHelper.cs
- ZipIOLocalFileHeader.cs
- JsonFormatWriterGenerator.cs
- TransactionScope.cs
- SatelliteContractVersionAttribute.cs
- MapPathBasedVirtualPathProvider.cs
- DataSysAttribute.cs
- StreamWriter.cs
- Encoding.cs
- CollectionDataContract.cs
- CqlWriter.cs
- ISO2022Encoding.cs
- ExpressionNormalizer.cs
- FlowDocument.cs
- StreamUpgradeBindingElement.cs
- GridViewCommandEventArgs.cs
- Membership.cs
- TreeNodeCollection.cs
- ContentTextAutomationPeer.cs
- Thread.cs
- WebPartsSection.cs
- ValidationResult.cs
- MobileCapabilities.cs
- SrgsText.cs
- CFGGrammar.cs
- EmbeddedMailObject.cs
- DictionaryBase.cs
- FlowLayoutSettings.cs
- SQLString.cs
- CalendarDateRangeChangingEventArgs.cs
- EntityTypeEmitter.cs
- LeftCellWrapper.cs
- MultiPageTextView.cs
- BasicCommandTreeVisitor.cs
- HttpModulesSection.cs
- PrePostDescendentsWalker.cs
- EntityReference.cs
- DBConnectionString.cs
- RuntimeHandles.cs
- DeobfuscatingStream.cs
- CollectionChangedEventManager.cs
- FrameworkElement.cs
- Activator.cs
- MethodBuilder.cs
- CriticalHandle.cs
- WindowsAuthenticationModule.cs
- versioninfo.cs
- EndEvent.cs
- ButtonChrome.cs
- InheritedPropertyChangedEventArgs.cs
- EmissiveMaterial.cs
- ApplicationServiceManager.cs
- WindowsToolbar.cs
- PrintControllerWithStatusDialog.cs
- BrushValueSerializer.cs
- SortExpressionBuilder.cs
- BaseDataListDesigner.cs
- Constants.cs
- RequestCacheValidator.cs
- ListControl.cs
- DispatchWrapper.cs
- PriorityItem.cs
- SpanIndex.cs
- Scene3D.cs
- SmiTypedGetterSetter.cs
- ParseHttpDate.cs
- CircleHotSpot.cs
- EventLog.cs
- DecoderFallbackWithFailureFlag.cs
- DeferredElementTreeState.cs
- ClientTargetSection.cs
- PropertyCollection.cs
- VariableExpressionConverter.cs
- ReliableMessagingVersionConverter.cs
- ActivityAction.cs
- AssemblyNameProxy.cs
- AppDomainProtocolHandler.cs
- IListConverters.cs
- ISessionStateStore.cs
- _ListenerAsyncResult.cs
- CodeMemberEvent.cs
- NameValueConfigurationElement.cs
- RightsManagementResourceHelper.cs
- _Rfc2616CacheValidators.cs
- MarkupCompilePass2.cs