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
- MultiTrigger.cs
- SnapLine.cs
- MaskedTextProvider.cs
- Statements.cs
- shaperfactoryquerycachekey.cs
- CodeAccessPermission.cs
- DiscoveryClientElement.cs
- WorkflowInstanceAbortedRecord.cs
- XmlILIndex.cs
- SystemDropShadowChrome.cs
- RoleGroupCollectionEditor.cs
- TextRunCacheImp.cs
- RequestCacheEntry.cs
- ViewPort3D.cs
- _TransmitFileOverlappedAsyncResult.cs
- MissingSatelliteAssemblyException.cs
- StylusPointPropertyInfoDefaults.cs
- SiteOfOriginContainer.cs
- TextBlockAutomationPeer.cs
- UIElement3D.cs
- PartManifestEntry.cs
- DelegateSerializationHolder.cs
- SubtreeProcessor.cs
- TaskFormBase.cs
- PropertySegmentSerializer.cs
- HostingEnvironmentException.cs
- SimplePropertyEntry.cs
- WebBrowserDesigner.cs
- MethodExpression.cs
- QuaternionConverter.cs
- SafeCryptContextHandle.cs
- DataColumn.cs
- StringConverter.cs
- ChangePasswordAutoFormat.cs
- SystemPens.cs
- UndirectedGraph.cs
- filewebresponse.cs
- XmlSchemaExternal.cs
- CategoryGridEntry.cs
- PropertyNames.cs
- PopOutPanel.cs
- EncryptedKey.cs
- CopyAction.cs
- ImageSourceTypeConverter.cs
- OutputCacheModule.cs
- LinqDataSourceSelectEventArgs.cs
- DesignerCommandAdapter.cs
- QilVisitor.cs
- EntityCommand.cs
- TextRangeEditLists.cs
- ToolStripCollectionEditor.cs
- DependencyObjectProvider.cs
- ContextStack.cs
- SearchForVirtualItemEventArgs.cs
- PropertyDescriptor.cs
- XmlAnyAttributeAttribute.cs
- EventsTab.cs
- ItemsChangedEventArgs.cs
- CharacterBufferReference.cs
- invalidudtexception.cs
- FileDialog.cs
- Internal.cs
- EncryptedData.cs
- Processor.cs
- TypeLoadException.cs
- WebHttpSecurityElement.cs
- FragmentQueryKB.cs
- MimeTypePropertyAttribute.cs
- EventBindingService.cs
- SatelliteContractVersionAttribute.cs
- Command.cs
- FixedDocument.cs
- XmlSchemaObjectCollection.cs
- AsymmetricAlgorithm.cs
- VectorAnimationBase.cs
- SplitterPanel.cs
- TextParaClient.cs
- NameSpaceEvent.cs
- ItemCollection.cs
- counter.cs
- CompatibleComparer.cs
- ComboBoxAutomationPeer.cs
- UnsafeNativeMethods.cs
- AttributeConverter.cs
- ILGenerator.cs
- DocumentViewerConstants.cs
- FacetValues.cs
- ManualResetEvent.cs
- KernelTypeValidation.cs
- LowerCaseStringConverter.cs
- CheckBoxBaseAdapter.cs
- LogPolicy.cs
- FileDialog_Vista_Interop.cs
- MessageHeaderException.cs
- ToolboxComponentsCreatedEventArgs.cs
- ProcessInfo.cs
- TreeIterator.cs
- ReadWriteSpinLock.cs
- PauseStoryboard.cs
- BitmapMetadata.cs