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
- DocComment.cs
- EncoderExceptionFallback.cs
- TreeNode.cs
- WmlControlAdapter.cs
- Light.cs
- LineBreak.cs
- LocalValueEnumerator.cs
- PlatformCulture.cs
- InkCanvasFeedbackAdorner.cs
- PostBackTrigger.cs
- Pkcs7Recipient.cs
- MemoryRecordBuffer.cs
- EditorPartCollection.cs
- DataGridViewCellFormattingEventArgs.cs
- SQLDouble.cs
- GenerateScriptTypeAttribute.cs
- SamlSecurityToken.cs
- TemplateParser.cs
- PathFigureCollection.cs
- IntPtr.cs
- AutomationElement.cs
- WinEventQueueItem.cs
- SqlInternalConnectionSmi.cs
- VisemeEventArgs.cs
- DataControlImageButton.cs
- TextServicesHost.cs
- SocketInformation.cs
- ImageFormat.cs
- SortAction.cs
- HitTestFilterBehavior.cs
- ViewCellSlot.cs
- Overlapped.cs
- SQLSingle.cs
- FigureParaClient.cs
- WebPartExportVerb.cs
- XmlBoundElement.cs
- SchemaObjectWriter.cs
- TagMapCollection.cs
- Script.cs
- Bold.cs
- FixedLineResult.cs
- SystemMulticastIPAddressInformation.cs
- _HTTPDateParse.cs
- DecimalConstantAttribute.cs
- WindowCollection.cs
- LinkDesigner.cs
- Timer.cs
- XmlTextReaderImplHelpers.cs
- UpdateTranslator.cs
- DataGridItemCollection.cs
- PrintPreviewControl.cs
- MimeTypeAttribute.cs
- RequestCacheEntry.cs
- EntityParameter.cs
- DetailsViewModeEventArgs.cs
- MbpInfo.cs
- TextShapeableCharacters.cs
- Codec.cs
- DesignBindingEditor.cs
- WizardPanel.cs
- UniqueConstraint.cs
- NameValueConfigurationCollection.cs
- DeriveBytes.cs
- DesignOnlyAttribute.cs
- ISCIIEncoding.cs
- DetailsViewPagerRow.cs
- StateItem.cs
- FormatSelectingMessageInspector.cs
- Automation.cs
- altserialization.cs
- DiagnosticTraceSchemas.cs
- TdsParser.cs
- StrokeRenderer.cs
- WebReferencesBuildProvider.cs
- XmlAttributes.cs
- SQLBoolean.cs
- DelegatingConfigHost.cs
- WebPartManager.cs
- ServiceObjectContainer.cs
- ConfigXmlSignificantWhitespace.cs
- XamlBrushSerializer.cs
- CssStyleCollection.cs
- RNGCryptoServiceProvider.cs
- WithParamAction.cs
- BufferAllocator.cs
- NeutralResourcesLanguageAttribute.cs
- UnauthorizedWebPart.cs
- ForAllOperator.cs
- EntityDataSourceWrapper.cs
- pingexception.cs
- WindowsPrincipal.cs
- StructuralObject.cs
- RealizationContext.cs
- XappLauncher.cs
- SmtpClient.cs
- AssemblyName.cs
- DependencyStoreSurrogate.cs
- DataGridViewRowCancelEventArgs.cs
- RectKeyFrameCollection.cs
- ContentIterators.cs