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
- Single.cs
- HashMembershipCondition.cs
- AsyncCodeActivity.cs
- SiteMembershipCondition.cs
- ContractMapping.cs
- RangeValidator.cs
- Vector3DKeyFrameCollection.cs
- CancelEventArgs.cs
- FlagsAttribute.cs
- SafeCryptoHandles.cs
- IxmlLineInfo.cs
- Propagator.JoinPropagator.cs
- Html32TextWriter.cs
- RuleInfoComparer.cs
- UserControl.cs
- RenamedEventArgs.cs
- QueryableDataSourceView.cs
- SqlFlattener.cs
- ColumnMapProcessor.cs
- SoapRpcServiceAttribute.cs
- DataGridColumnCollection.cs
- Filter.cs
- AuthorizationRule.cs
- ApplicationException.cs
- CustomAttributeFormatException.cs
- EventTrigger.cs
- EntityDataSourceView.cs
- DataServiceRequest.cs
- FontUnitConverter.cs
- VirtualPathProvider.cs
- ComponentDispatcher.cs
- ItemsControlAutomationPeer.cs
- ContentControl.cs
- MediaContextNotificationWindow.cs
- AutomationElementCollection.cs
- EtwTrace.cs
- AstTree.cs
- ListenerAdapter.cs
- HandlerWithFactory.cs
- QilExpression.cs
- AssemblyBuilderData.cs
- DirtyTextRange.cs
- SchemaManager.cs
- UTF32Encoding.cs
- ParameterToken.cs
- UniqueIdentifierService.cs
- MoveSizeWinEventHandler.cs
- KeyToListMap.cs
- SafeBitVector32.cs
- FileSecurity.cs
- NamespaceImport.cs
- XmlEncodedRawTextWriter.cs
- ControllableStoryboardAction.cs
- ExternalFile.cs
- WebScriptMetadataFormatter.cs
- BuilderPropertyEntry.cs
- SingleAnimation.cs
- ReferenceTypeElement.cs
- ImageConverter.cs
- KnownColorTable.cs
- QilGeneratorEnv.cs
- ServiceReference.cs
- EntityStoreSchemaFilterEntry.cs
- Pen.cs
- EventMemberCodeDomSerializer.cs
- SymbolMethod.cs
- LongSumAggregationOperator.cs
- ValueUnavailableException.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- SendActivityDesignerTheme.cs
- HttpWebResponse.cs
- NetworkInformationException.cs
- SqlDataReader.cs
- TableCellAutomationPeer.cs
- EntitySetBaseCollection.cs
- CodeObject.cs
- JsonDataContract.cs
- EventLogTraceListener.cs
- RandomNumberGenerator.cs
- Message.cs
- WebInvokeAttribute.cs
- BaseConfigurationRecord.cs
- AsyncOperationManager.cs
- WinFormsComponentEditor.cs
- Bidi.cs
- RootAction.cs
- HtmlInputImage.cs
- BasicBrowserDialog.cs
- CaseCqlBlock.cs
- DeviceSpecificChoice.cs
- OleDbRowUpdatingEvent.cs
- ObjectStorage.cs
- CellConstant.cs
- WindowInteractionStateTracker.cs
- PersonalizationProviderCollection.cs
- VisualTreeUtils.cs
- ThreadPool.cs
- HandlerWithFactory.cs
- EntityDataSourceDataSelection.cs
- SapiGrammar.cs