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
- OracleBoolean.cs
- KeyboardNavigation.cs
- GcSettings.cs
- ControlBuilder.cs
- listitem.cs
- JoinElimination.cs
- CqlGenerator.cs
- ImmutableCollection.cs
- Schedule.cs
- BinaryUtilClasses.cs
- XmlSchemaCollection.cs
- OdbcConnectionString.cs
- XmlDocumentFieldSchema.cs
- XmlFileEditor.cs
- ResourceContainer.cs
- ContentElement.cs
- cache.cs
- SimplePropertyEntry.cs
- ApplicationTrust.cs
- AppSettingsExpressionBuilder.cs
- ObsoleteAttribute.cs
- StylusPlugin.cs
- CroppedBitmap.cs
- PairComparer.cs
- DataGridCommandEventArgs.cs
- XmlnsPrefixAttribute.cs
- SqlDataSourceSelectingEventArgs.cs
- Pen.cs
- CompositeDataBoundControl.cs
- XmlChoiceIdentifierAttribute.cs
- FixedMaxHeap.cs
- SystemSounds.cs
- WebWorkflowRole.cs
- ZoneIdentityPermission.cs
- ScalarConstant.cs
- StylusPointPropertyId.cs
- PassportPrincipal.cs
- __ConsoleStream.cs
- WebPartDisplayModeCollection.cs
- Validator.cs
- LogicalTreeHelper.cs
- BrowserTree.cs
- SetState.cs
- LateBoundBitmapDecoder.cs
- SQLStringStorage.cs
- CompilerTypeWithParams.cs
- ArraySubsetEnumerator.cs
- CriticalExceptions.cs
- RsaSecurityTokenAuthenticator.cs
- AdjustableArrowCap.cs
- TextEffect.cs
- CharAnimationBase.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- SqlServer2KCompatibilityAnnotation.cs
- PixelFormat.cs
- WindowsToolbar.cs
- HttpListener.cs
- XmlSchemaSimpleContent.cs
- CodeEventReferenceExpression.cs
- MostlySingletonList.cs
- SoapIgnoreAttribute.cs
- ResourceProviderFactory.cs
- HandleExceptionArgs.cs
- DefaultValueConverter.cs
- CheckBoxFlatAdapter.cs
- ConstrainedDataObject.cs
- TypeValidationEventArgs.cs
- PointCollectionValueSerializer.cs
- AsymmetricKeyExchangeFormatter.cs
- RtfControlWordInfo.cs
- DataBoundControl.cs
- MsmqTransportBindingElement.cs
- SchemaTableOptionalColumn.cs
- ConstraintStruct.cs
- StringValidator.cs
- UserControlBuildProvider.cs
- XmlTextReaderImplHelpers.cs
- InputLanguage.cs
- FixedSOMTableCell.cs
- MediaElement.cs
- Validator.cs
- RenameRuleObjectDialog.Designer.cs
- XmlSchemaImporter.cs
- OleDbCommand.cs
- PersonalizationStateInfoCollection.cs
- XPathArrayIterator.cs
- FocusWithinProperty.cs
- FileUtil.cs
- LazyTextWriterCreator.cs
- PropertyInfoSet.cs
- EditorZoneBase.cs
- RegexMatch.cs
- SByteStorage.cs
- NameSpaceExtractor.cs
- DataGridColumnEventArgs.cs
- HttpApplicationFactory.cs
- EntityChangedParams.cs
- XmlAttributes.cs
- XhtmlBasicValidatorAdapter.cs
- ContextProperty.cs