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
- DbConnectionStringCommon.cs
- DataColumnPropertyDescriptor.cs
- FixedFlowMap.cs
- StyleXamlParser.cs
- SqlUdtInfo.cs
- SingleStorage.cs
- ColumnClickEvent.cs
- FixedTextBuilder.cs
- GeneralTransform.cs
- Evidence.cs
- PageContent.cs
- ComponentCollection.cs
- ComponentManagerBroker.cs
- CodeAssignStatement.cs
- SchemaImporterExtensionsSection.cs
- NetworkCredential.cs
- DocumentGridContextMenu.cs
- ClearCollection.cs
- Rect.cs
- UnsafeNativeMethodsCLR.cs
- XmlDocumentSurrogate.cs
- Rectangle.cs
- TrackingProfile.cs
- TempFiles.cs
- Activity.cs
- TouchPoint.cs
- Compiler.cs
- HatchBrush.cs
- updateconfighost.cs
- Win32PrintDialog.cs
- ConsoleTraceListener.cs
- GridEntry.cs
- NetworkInformationException.cs
- DesignerTransaction.cs
- SettingsAttributes.cs
- MSHTMLHost.cs
- ConfigurationSectionGroupCollection.cs
- Point.cs
- storepermission.cs
- SQLInt32.cs
- SQLCharsStorage.cs
- MULTI_QI.cs
- AutomationPatternInfo.cs
- LineGeometry.cs
- ConfigurationPropertyCollection.cs
- Odbc32.cs
- MembershipValidatePasswordEventArgs.cs
- DragEventArgs.cs
- TransactionScope.cs
- PersonalizationStateInfo.cs
- shaperfactoryquerycacheentry.cs
- RtfNavigator.cs
- ComponentDispatcher.cs
- _SslStream.cs
- CodeTypeReferenceSerializer.cs
- InputMethodStateChangeEventArgs.cs
- XmlLanguage.cs
- XhtmlConformanceSection.cs
- PointValueSerializer.cs
- AnnotationStore.cs
- TypeNameConverter.cs
- SystemIPInterfaceProperties.cs
- StringUtil.cs
- ProfilePropertySettings.cs
- SiteMapNode.cs
- GraphicsPath.cs
- EmptyStringExpandableObjectConverter.cs
- PointLightBase.cs
- SortExpressionBuilder.cs
- MessageContractAttribute.cs
- FileLevelControlBuilderAttribute.cs
- ExpandoClass.cs
- UpdateCommandGenerator.cs
- StorageScalarPropertyMapping.cs
- GorillaCodec.cs
- OleDbEnumerator.cs
- ContentDesigner.cs
- PageRequestManager.cs
- MasterPageCodeDomTreeGenerator.cs
- SqlHelper.cs
- xml.cs
- File.cs
- TextChangedEventArgs.cs
- ServiceOperationInfoTypeConverter.cs
- SortFieldComparer.cs
- HashAlgorithm.cs
- AttributeEmitter.cs
- JulianCalendar.cs
- _emptywebproxy.cs
- SystemBrushes.cs
- GridViewCommandEventArgs.cs
- MobileControlsSection.cs
- IdentityReference.cs
- EdmScalarPropertyAttribute.cs
- MoveSizeWinEventHandler.cs
- EditorPartCollection.cs
- Variable.cs
- DataColumnMapping.cs
- Section.cs
- SemanticAnalyzer.cs