Code:
/ 4.0 / 4.0 / 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. 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
- HttpDictionary.cs
- _BasicClient.cs
- PieceDirectory.cs
- EventInfo.cs
- CompilerWrapper.cs
- MissingMemberException.cs
- WorkflowOperationFault.cs
- PropertyIdentifier.cs
- CharacterShapingProperties.cs
- DaylightTime.cs
- CapabilitiesPattern.cs
- TypedDataSetSchemaImporterExtension.cs
- ClientSection.cs
- Size3DValueSerializer.cs
- SessionEndingEventArgs.cs
- NonClientArea.cs
- QilParameter.cs
- DesignerLinkAdapter.cs
- HttpCookiesSection.cs
- MultiBindingExpression.cs
- SQLResource.cs
- PrimitiveXmlSerializers.cs
- PageParser.cs
- SafeNativeMethods.cs
- RuntimeWrappedException.cs
- NavigationPropertyAccessor.cs
- PreviewControlDesigner.cs
- EntityObject.cs
- ExpandSegmentCollection.cs
- XamlPathDataSerializer.cs
- RouteData.cs
- AddInServer.cs
- PackageDigitalSignature.cs
- ByteStreamGeometryContext.cs
- EventBuilder.cs
- WindowsScrollBar.cs
- RemotingConfigParser.cs
- ControlBuilder.cs
- DeflateInput.cs
- FontDialog.cs
- NumericPagerField.cs
- KoreanCalendar.cs
- Activity.cs
- PriorityBinding.cs
- SmiContext.cs
- Validator.cs
- SessionStateContainer.cs
- LogEntrySerializer.cs
- APCustomTypeDescriptor.cs
- WebPartCancelEventArgs.cs
- BindableAttribute.cs
- DescendantQuery.cs
- ClassHandlersStore.cs
- CommonGetThemePartSize.cs
- DataGridViewTopRowAccessibleObject.cs
- DefaultValidator.cs
- DecodeHelper.cs
- RuleInfoComparer.cs
- StylusLogic.cs
- SqlMethods.cs
- QuaternionAnimationBase.cs
- PostBackTrigger.cs
- LocalizableAttribute.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- GeneralTransformGroup.cs
- ConfigurationSchemaErrors.cs
- XmlReflectionMember.cs
- DesignerProperties.cs
- ToolStripItemDataObject.cs
- CodePageUtils.cs
- ServerType.cs
- COM2PropertyPageUITypeConverter.cs
- InertiaRotationBehavior.cs
- PickDesigner.xaml.cs
- StateFinalizationActivity.cs
- FormattedTextSymbols.cs
- BaseCodeDomTreeGenerator.cs
- ParserHooks.cs
- InstalledVoice.cs
- Select.cs
- ExpressionBuilderCollection.cs
- WebPartDisplayModeEventArgs.cs
- SelectedPathEditor.cs
- DataGridViewDataErrorEventArgs.cs
- VisualStyleInformation.cs
- Composition.cs
- QueryResults.cs
- VirtualPathProvider.cs
- CacheAxisQuery.cs
- Form.cs
- ValidatingReaderNodeData.cs
- FactoryRecord.cs
- TextDecorationCollection.cs
- IdentifierCreationService.cs
- RSAPKCS1KeyExchangeFormatter.cs
- SyndicationContent.cs
- BrowserCapabilitiesCompiler.cs
- TabControlEvent.cs
- XmlSchemaSimpleTypeRestriction.cs
- WebPageTraceListener.cs