Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- GridViewSelectEventArgs.cs
- WebPartActionVerb.cs
- VScrollProperties.cs
- SystemIPv4InterfaceProperties.cs
- SmiXetterAccessMap.cs
- GroupBoxAutomationPeer.cs
- Transform.cs
- ToolStripContainer.cs
- _LazyAsyncResult.cs
- SqlTypesSchemaImporter.cs
- DupHandleConnectionReader.cs
- CustomMenuItemCollection.cs
- SslStream.cs
- Preprocessor.cs
- PrePrepareMethodAttribute.cs
- ColumnMapTranslator.cs
- _ListenerResponseStream.cs
- ToolStripOverflow.cs
- ColumnPropertiesGroup.cs
- Material.cs
- Profiler.cs
- TraceXPathNavigator.cs
- AssociationEndMember.cs
- RadioButtonBaseAdapter.cs
- UpdateExpressionVisitor.cs
- LZCodec.cs
- XmlEventCache.cs
- SqlReferenceCollection.cs
- CqlGenerator.cs
- SqlNamer.cs
- _TransmitFileOverlappedAsyncResult.cs
- BlurBitmapEffect.cs
- XmlCDATASection.cs
- XmlILAnnotation.cs
- CalendarDataBindingHandler.cs
- AnimationException.cs
- EntityDataSourceDataSelection.cs
- MenuRendererStandards.cs
- WrapPanel.cs
- DataGridColumnFloatingHeader.cs
- FilterQuery.cs
- PersonalizationEntry.cs
- XpsDigitalSignature.cs
- DataGridColumnStyleMappingNameEditor.cs
- LayoutManager.cs
- ServiceDescriptionSerializer.cs
- DictionaryBase.cs
- WebReferencesBuildProvider.cs
- DispatcherObject.cs
- ReturnType.cs
- SmuggledIUnknown.cs
- Graphics.cs
- XmlDictionaryWriter.cs
- ConversionHelper.cs
- ThicknessKeyFrameCollection.cs
- CodeExpressionStatement.cs
- MonitoringDescriptionAttribute.cs
- WriteTimeStream.cs
- TransactionProtocolConverter.cs
- EnvelopedPkcs7.cs
- WebSysDescriptionAttribute.cs
- InvalidPrinterException.cs
- InternalRelationshipCollection.cs
- XmlSigningNodeWriter.cs
- TreeNodeCollection.cs
- FlowNode.cs
- XsltException.cs
- UIElementParagraph.cs
- AssemblySettingAttributes.cs
- StringOutput.cs
- ResourcePool.cs
- OleDbInfoMessageEvent.cs
- TypeUtil.cs
- RegexNode.cs
- RadioButtonPopupAdapter.cs
- NotCondition.cs
- WebPartManagerInternals.cs
- BaseCollection.cs
- TimeZoneInfo.cs
- RepeaterCommandEventArgs.cs
- ConnectionConsumerAttribute.cs
- AnnotationService.cs
- ToolboxComponentsCreatingEventArgs.cs
- WebBrowserEvent.cs
- FieldToken.cs
- XmlBinaryWriterSession.cs
- ManagementEventWatcher.cs
- PointAnimationUsingKeyFrames.cs
- wgx_exports.cs
- MailBnfHelper.cs
- OleServicesContext.cs
- DiffuseMaterial.cs
- XmlIlTypeHelper.cs
- RegexCapture.cs
- XmlSchemaAttribute.cs
- TypedReference.cs
- TreeNodeEventArgs.cs
- ConstructorExpr.cs
- ClientTargetCollection.cs
- QfeChecker.cs