Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Catch.cs
- ListBoxDesigner.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- SoapRpcServiceAttribute.cs
- UniqueConstraint.cs
- PrimitiveType.cs
- LabelAutomationPeer.cs
- DesignerDataParameter.cs
- SecUtil.cs
- RenderData.cs
- Vector3dCollection.cs
- XmlDocumentType.cs
- DependencySource.cs
- Wizard.cs
- oledbconnectionstring.cs
- IISMapPath.cs
- FontCollection.cs
- Debug.cs
- AutomationElement.cs
- StrongNamePublicKeyBlob.cs
- UIntPtr.cs
- SamlConditions.cs
- ControlHelper.cs
- WebPartEditVerb.cs
- MembershipValidatePasswordEventArgs.cs
- EventTrigger.cs
- HtmlTitle.cs
- IfElseDesigner.xaml.cs
- ClientTargetCollection.cs
- ResourceSet.cs
- LoadWorkflowByKeyAsyncResult.cs
- BitmapDecoder.cs
- NullableDecimalMinMaxAggregationOperator.cs
- CssClassPropertyAttribute.cs
- X509CertificateStore.cs
- SerializationObjectManager.cs
- ReliableSessionElement.cs
- Int32EqualityComparer.cs
- TransformerTypeCollection.cs
- LocalValueEnumerator.cs
- SingleTagSectionHandler.cs
- EventHandlerService.cs
- XmlSerializationGeneratedCode.cs
- ClassData.cs
- DataGridViewCellCollection.cs
- ValidationService.cs
- LinqDataSource.cs
- DateTimeConverter2.cs
- IdentityNotMappedException.cs
- SecurityHelper.cs
- Variant.cs
- ExpressionBindingsDialog.cs
- KeyInterop.cs
- TextEncodedRawTextWriter.cs
- ZipArchive.cs
- FontStretchConverter.cs
- TypeSystem.cs
- OdbcConnectionStringbuilder.cs
- WindowPattern.cs
- DigitShape.cs
- ChannelCredentials.cs
- PersonalizationEntry.cs
- CardSpacePolicyElement.cs
- ReflectionPermission.cs
- ListViewContainer.cs
- InfoCardKeyedHashAlgorithm.cs
- FaultDesigner.cs
- TemplateDefinition.cs
- WebReferenceOptions.cs
- FileClassifier.cs
- _ListenerRequestStream.cs
- KeyValuePair.cs
- AuthenticationConfig.cs
- StringFunctions.cs
- Overlapped.cs
- ControlBuilderAttribute.cs
- DropDownButton.cs
- DefaultMemberAttribute.cs
- HtmlTextArea.cs
- ProviderSettings.cs
- CursorConverter.cs
- FacetDescription.cs
- ZipIOBlockManager.cs
- Matrix3D.cs
- RegexWriter.cs
- SettingsAttributes.cs
- ADMembershipUser.cs
- WebPartZone.cs
- ListViewGroup.cs
- ApplicationActivator.cs
- HttpListener.cs
- ToolStripSeparator.cs
- TraceHwndHost.cs
- SemanticBasicElement.cs
- ExtentJoinTreeNode.cs
- EmissiveMaterial.cs
- path.cs
- cookie.cs
- RectValueSerializer.cs
- ApplicationSettingsBase.cs