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
- XamlReaderHelper.cs
- HMACSHA256.cs
- SerialErrors.cs
- WindowCollection.cs
- UnrecognizedPolicyAssertionElement.cs
- XmlMemberMapping.cs
- EntityUtil.cs
- ProfileSettings.cs
- CodePageEncoding.cs
- UriWriter.cs
- FixedPageAutomationPeer.cs
- TimeoutValidationAttribute.cs
- ListView.cs
- DataGridViewElement.cs
- EntityDataReader.cs
- URLAttribute.cs
- Section.cs
- TextCompositionEventArgs.cs
- manifestimages.cs
- Error.cs
- MetadataItemSerializer.cs
- COAUTHINFO.cs
- DelegatedStream.cs
- ConditionalAttribute.cs
- Events.cs
- ResourceAssociationSet.cs
- BadImageFormatException.cs
- ToolStripSettings.cs
- TextEditorCopyPaste.cs
- RegisteredScript.cs
- linebase.cs
- LogicalExpressionEditor.cs
- ListControl.cs
- VideoDrawing.cs
- PkcsUtils.cs
- FixedPosition.cs
- GridViewPageEventArgs.cs
- PerformanceCounterPermission.cs
- NativeMethods.cs
- ResourceDescriptionAttribute.cs
- Point3DValueSerializer.cs
- Compilation.cs
- EnumValidator.cs
- HttpApplicationFactory.cs
- HatchBrush.cs
- WebPartEditorCancelVerb.cs
- SynthesizerStateChangedEventArgs.cs
- _NtlmClient.cs
- BaseCodeDomTreeGenerator.cs
- C14NUtil.cs
- ReferenceSchema.cs
- CheckBoxRenderer.cs
- SecurityStandardsManager.cs
- FormatVersion.cs
- DynamicPropertyReader.cs
- OleCmdHelper.cs
- FileDialogCustomPlacesCollection.cs
- OnOperation.cs
- QueryCursorEventArgs.cs
- SequentialOutput.cs
- DataGridViewControlCollection.cs
- RequestCacheEntry.cs
- ReflectEventDescriptor.cs
- ClientRuntimeConfig.cs
- UnsafeNativeMethods.cs
- WriterOutput.cs
- ListManagerBindingsCollection.cs
- PopupEventArgs.cs
- StylusCollection.cs
- SQLByteStorage.cs
- RunWorkerCompletedEventArgs.cs
- Polyline.cs
- DoubleAnimationUsingPath.cs
- TrackingMemoryStreamFactory.cs
- XmlName.cs
- PagedControl.cs
- UDPClient.cs
- SelectionRangeConverter.cs
- DataColumnChangeEvent.cs
- HttpResponse.cs
- ConnectionStringsExpressionEditor.cs
- FilterFactory.cs
- CodeBinaryOperatorExpression.cs
- OwnerDrawPropertyBag.cs
- PhonemeEventArgs.cs
- DesignObjectWrapper.cs
- TcpTransportElement.cs
- EdmTypeAttribute.cs
- ProcessStartInfo.cs
- CodeCompileUnit.cs
- ComponentManagerBroker.cs
- HtmlLink.cs
- EncodingInfo.cs
- ipaddressinformationcollection.cs
- IncrementalCompileAnalyzer.cs
- ParenthesizePropertyNameAttribute.cs
- ModelServiceImpl.cs
- EllipseGeometry.cs
- StyleConverter.cs
- EventListener.cs