Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / System / Windows / DeferredReference.cs / 1 / DeferredReference.cs
//----------------------------------------------------------------------------
//
// File: DeferredReference.cs
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// Description: Proxy object passed to the property system to delay load values.
//
//---------------------------------------------------------------------------
namespace System.Windows
{
using MS.Internal.WindowsBase; // FriendAccessAllowed
// Proxy object passed to the property system to delay load values.
//
// The property system will make a GetValue callback (dereferencing the
// reference) inside DependencyProperty.GetValue calls, or before
// coercion callbacks to derived classes.
//
// DeferredReference instances are passed directly to ValidateValue
// callbacks (which always go to the DependencyProperty owner class),
// and also to CoerceValue callbacks on the owner class only. THEREFORE,
// IT IS
[FriendAccessAllowed] // Built into Base, also used by Core & Framework.
internal abstract class DeferredReference
{
//-----------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
// Deferences a property value on demand.
internal abstract object GetValue(BaseValueSourceInternal valueSource);
// Gets the type of the value it represents
internal abstract Type GetValueType();
#endregion Internal Methods
}
internal class DeferredMutableDefaultReference : DeferredReference
{
#region Constructor
internal DeferredMutableDefaultReference(PropertyMetadata metadata, DependencyObject d, DependencyProperty dp)
{
_sourceObject = d;
_sourceProperty = dp;
_sourceMetadata = metadata;
}
#endregion Constructor
#region Methods
internal override object GetValue(BaseValueSourceInternal valueSource)
{
return _sourceMetadata.GetDefaultValue(_sourceObject, _sourceProperty);
}
// Gets the type of the value it represents
internal override Type GetValueType()
{
return _sourceProperty.PropertyType;
}
#endregion Methods
#region Properties
internal PropertyMetadata SourceMetadata
{
get { return _sourceMetadata; }
}
protected DependencyObject SourceObject
{
get { return _sourceObject; }
}
protected DependencyProperty SourceProperty
{
get { return _sourceProperty; }
}
#endregion Properties
#region Data
private readonly PropertyMetadata _sourceMetadata;
private readonly DependencyObject _sourceObject;
private readonly DependencyProperty _sourceProperty;
#endregion Data
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
// File: DeferredReference.cs
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// Description: Proxy object passed to the property system to delay load values.
//
//---------------------------------------------------------------------------
namespace System.Windows
{
using MS.Internal.WindowsBase; // FriendAccessAllowed
// Proxy object passed to the property system to delay load values.
//
// The property system will make a GetValue callback (dereferencing the
// reference) inside DependencyProperty.GetValue calls, or before
// coercion callbacks to derived classes.
//
// DeferredReference instances are passed directly to ValidateValue
// callbacks (which always go to the DependencyProperty owner class),
// and also to CoerceValue callbacks on the owner class only. THEREFORE,
// IT IS
[FriendAccessAllowed] // Built into Base, also used by Core & Framework.
internal abstract class DeferredReference
{
//-----------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
// Deferences a property value on demand.
internal abstract object GetValue(BaseValueSourceInternal valueSource);
// Gets the type of the value it represents
internal abstract Type GetValueType();
#endregion Internal Methods
}
internal class DeferredMutableDefaultReference : DeferredReference
{
#region Constructor
internal DeferredMutableDefaultReference(PropertyMetadata metadata, DependencyObject d, DependencyProperty dp)
{
_sourceObject = d;
_sourceProperty = dp;
_sourceMetadata = metadata;
}
#endregion Constructor
#region Methods
internal override object GetValue(BaseValueSourceInternal valueSource)
{
return _sourceMetadata.GetDefaultValue(_sourceObject, _sourceProperty);
}
// Gets the type of the value it represents
internal override Type GetValueType()
{
return _sourceProperty.PropertyType;
}
#endregion Methods
#region Properties
internal PropertyMetadata SourceMetadata
{
get { return _sourceMetadata; }
}
protected DependencyObject SourceObject
{
get { return _sourceObject; }
}
protected DependencyProperty SourceProperty
{
get { return _sourceProperty; }
}
#endregion Properties
#region Data
private readonly PropertyMetadata _sourceMetadata;
private readonly DependencyObject _sourceObject;
private readonly DependencyProperty _sourceProperty;
#endregion Data
}
}
// 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
- AbstractExpressions.cs
- RegistrationServices.cs
- WebPartZoneBase.cs
- DataGridViewSelectedCellCollection.cs
- TextServicesManager.cs
- TextFragmentEngine.cs
- OverrideMode.cs
- Parameter.cs
- HttpWebResponse.cs
- NavigationFailedEventArgs.cs
- NamespaceDisplay.xaml.cs
- WebBrowserContainer.cs
- ListDesigner.cs
- BaseTemplateCodeDomTreeGenerator.cs
- CryptoKeySecurity.cs
- BamlStream.cs
- BoundField.cs
- XmlCustomFormatter.cs
- MeshGeometry3D.cs
- SafeEventLogWriteHandle.cs
- RequestNavigateEventArgs.cs
- HttpServerProtocol.cs
- StrokeNodeEnumerator.cs
- EntityConnection.cs
- XmlAnyElementAttributes.cs
- Enum.cs
- SystemIcmpV4Statistics.cs
- XmlLanguageConverter.cs
- Utility.cs
- TypeUsage.cs
- SqlDataAdapter.cs
- CriticalHandle.cs
- Lookup.cs
- XmlnsCache.cs
- TemplateKey.cs
- EntryPointNotFoundException.cs
- ClientSettingsStore.cs
- PackagePartCollection.cs
- XmlProcessingInstruction.cs
- DateTimeFormat.cs
- InputLanguageProfileNotifySink.cs
- XamlRtfConverter.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- PerspectiveCamera.cs
- FacetDescription.cs
- DataRecordObjectView.cs
- XPathParser.cs
- ColumnMapTranslator.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- WebBrowserProgressChangedEventHandler.cs
- WSTrust.cs
- BinaryNode.cs
- EncodingDataItem.cs
- LayoutInformation.cs
- MessageSecurityTokenVersion.cs
- HtmlSelect.cs
- ButtonChrome.cs
- Wizard.cs
- Animatable.cs
- DataGridViewCellStyleBuilderDialog.cs
- ConfigurationStrings.cs
- GridSplitter.cs
- AttributeCollection.cs
- MetadataCache.cs
- COM2IProvidePropertyBuilderHandler.cs
- WebAdminConfigurationHelper.cs
- Exceptions.cs
- Avt.cs
- NativeMethods.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- CodeArrayCreateExpression.cs
- ImpersonateTokenRef.cs
- CollectionChangeEventArgs.cs
- DropTarget.cs
- ToolStripButton.cs
- TraceUtility.cs
- SymLanguageVendor.cs
- ProfessionalColors.cs
- RichTextBoxAutomationPeer.cs
- ExpandCollapsePatternIdentifiers.cs
- SrgsNameValueTag.cs
- FormViewPagerRow.cs
- PublishLicense.cs
- QilTernary.cs
- Point3DConverter.cs
- ToolStripControlHost.cs
- ProcessHost.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- FormattedTextSymbols.cs
- Code.cs
- TextServicesProperty.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- HtmlTableCellCollection.cs
- ManagedIStream.cs
- PropertyTabAttribute.cs
- PageContentAsyncResult.cs
- MissingMemberException.cs
- HttpBufferlessInputStream.cs
- EncoderReplacementFallback.cs
- Maps.cs