ProvideValueServiceProvider.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / Markup / ProvideValueServiceProvider.cs / 1 / ProvideValueServiceProvider.cs

                            /****************************************************************************\ 
*
* File: ProvideValueServiceProvider.cs
*
*  ServiceProvider class that is passed into MarkupExtensions.ProvideValue method 
*  that understands the ParserContext.
* 
* Copyright (C) 2006 by Microsoft Corporation.  All rights reserved. 
*
\***************************************************************************/ 

using System;
using System.Windows;
using System.Windows.Media; 
using System.Diagnostics;
 
namespace System.Windows.Markup 
{
    ///  
    ///  Base class for all Xaml markup extensions.
    /// 

    internal class ProvideValueServiceProvider : IServiceProvider, IProvideValueTarget, IBamlReader, IXamlTypeResolver, IUriContext, IFreezeFreezables 
    {
        // Construction 
 
        internal ProvideValueServiceProvider(ParserContext context)
        { 
            _context = context;
        }

        internal ProvideValueServiceProvider() 
        {
        } 
 
        // Set the TargetObject/Property (for use by IProvideValueTarget).
 
        internal void SetData(object targetObject, object targetProperty)
        {
            _targetObject = targetObject;
            _targetProperty = targetProperty; 
        }
 
        // Clear the TargetObject/Property (after a call to ProvideValue) 

        internal void ClearData() 
        {
            _targetObject = _targetProperty = null;
        }
 

        // IXamlTypeResolver implementation 
 
        Type IXamlTypeResolver.Resolve(string qualifiedTypeName) // E.g. foo:Class
        { 
            return _context.XamlTypeMapper.GetTypeFromBaseString(qualifiedTypeName, _context, true);
        }

        // IBamlReader implementation 

        BamlRecordReader IBamlReader.GetBamlReader() 
        { 
            return _context.BamlReader;
        } 

        // IProvideValueTarget implementation

        object IProvideValueTarget.TargetObject 
        {
            get { return _targetObject; } 
        } 
        object IProvideValueTarget.TargetProperty
        { 
            get { return _targetProperty; }
        }

        // IUriContext implementation 

        Uri IUriContext.BaseUri 
        { 
            get { return _context.BaseUri; }
            set { throw new NotSupportedException(SR.Get(SRID.ParserProvideValueCantSetUri)); } 
        }

        bool IFreezeFreezables.FreezeFreezables
        { 
            get
            { 
                return _context.FreezeFreezables; 
            }
        } 

        bool IFreezeFreezables.TryFreeze(string value, Freezable freezable)
        {
            return _context.TryCacheFreezable(value, freezable); 
        }
 
        Freezable IFreezeFreezables.TryGetFreezable(string value) 
        {
            return _context.TryGetFreezable(value); 
        }


        // IServiceProvider implementation (this is the way to get to the 
        // above interface implementations).
 
        public object GetService(Type service) 
        {
            // IProvideValueTarget is the only implementation that 
            // doesn't need the ParserContext

            if( service == typeof(IProvideValueTarget))
            { 
                return this as IProvideValueTarget;
            } 
 
            if( _context != null )
            { 
                if( service == typeof(IXamlTypeResolver))
                {
                    return this as IXamlTypeResolver;
                } 

                else if( service == typeof(IUriContext)) 
                { 
                    return this as IUriContext;
                } 

                else if( service == typeof(IBamlReader))
                {
                    return this as IBamlReader; 
                }
                else if (service == typeof(IFreezeFreezables)) 
                { 
                    return this as IFreezeFreezables;
                } 
            }


            return null; 

        } 
 

        // Data 

        private ParserContext _context = null;
        private object _targetObject = null;
        private object _targetProperty = null; 

 
    } 
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/****************************************************************************\ 
*
* File: ProvideValueServiceProvider.cs
*
*  ServiceProvider class that is passed into MarkupExtensions.ProvideValue method 
*  that understands the ParserContext.
* 
* Copyright (C) 2006 by Microsoft Corporation.  All rights reserved. 
*
\***************************************************************************/ 

using System;
using System.Windows;
using System.Windows.Media; 
using System.Diagnostics;
 
namespace System.Windows.Markup 
{
    ///  
    ///  Base class for all Xaml markup extensions.
    /// 

    internal class ProvideValueServiceProvider : IServiceProvider, IProvideValueTarget, IBamlReader, IXamlTypeResolver, IUriContext, IFreezeFreezables 
    {
        // Construction 
 
        internal ProvideValueServiceProvider(ParserContext context)
        { 
            _context = context;
        }

        internal ProvideValueServiceProvider() 
        {
        } 
 
        // Set the TargetObject/Property (for use by IProvideValueTarget).
 
        internal void SetData(object targetObject, object targetProperty)
        {
            _targetObject = targetObject;
            _targetProperty = targetProperty; 
        }
 
        // Clear the TargetObject/Property (after a call to ProvideValue) 

        internal void ClearData() 
        {
            _targetObject = _targetProperty = null;
        }
 

        // IXamlTypeResolver implementation 
 
        Type IXamlTypeResolver.Resolve(string qualifiedTypeName) // E.g. foo:Class
        { 
            return _context.XamlTypeMapper.GetTypeFromBaseString(qualifiedTypeName, _context, true);
        }

        // IBamlReader implementation 

        BamlRecordReader IBamlReader.GetBamlReader() 
        { 
            return _context.BamlReader;
        } 

        // IProvideValueTarget implementation

        object IProvideValueTarget.TargetObject 
        {
            get { return _targetObject; } 
        } 
        object IProvideValueTarget.TargetProperty
        { 
            get { return _targetProperty; }
        }

        // IUriContext implementation 

        Uri IUriContext.BaseUri 
        { 
            get { return _context.BaseUri; }
            set { throw new NotSupportedException(SR.Get(SRID.ParserProvideValueCantSetUri)); } 
        }

        bool IFreezeFreezables.FreezeFreezables
        { 
            get
            { 
                return _context.FreezeFreezables; 
            }
        } 

        bool IFreezeFreezables.TryFreeze(string value, Freezable freezable)
        {
            return _context.TryCacheFreezable(value, freezable); 
        }
 
        Freezable IFreezeFreezables.TryGetFreezable(string value) 
        {
            return _context.TryGetFreezable(value); 
        }


        // IServiceProvider implementation (this is the way to get to the 
        // above interface implementations).
 
        public object GetService(Type service) 
        {
            // IProvideValueTarget is the only implementation that 
            // doesn't need the ParserContext

            if( service == typeof(IProvideValueTarget))
            { 
                return this as IProvideValueTarget;
            } 
 
            if( _context != null )
            { 
                if( service == typeof(IXamlTypeResolver))
                {
                    return this as IXamlTypeResolver;
                } 

                else if( service == typeof(IUriContext)) 
                { 
                    return this as IUriContext;
                } 

                else if( service == typeof(IBamlReader))
                {
                    return this as IBamlReader; 
                }
                else if (service == typeof(IFreezeFreezables)) 
                { 
                    return this as IFreezeFreezables;
                } 
            }


            return null; 

        } 
 

        // Data 

        private ParserContext _context = null;
        private object _targetObject = null;
        private object _targetProperty = null; 

 
    } 
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK