RoutedEventValueSerializer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Markup / RoutedEventValueSerializer.cs / 1 / RoutedEventValueSerializer.cs

                            //------------------------------------------------------------------------ 
//
//  Microsoft Windows Client Platform
//  Copyright (C) Microsoft Corporation, 2005
// 
//  File:      RoutedEventValueSerializer.cs
// 
//  Contents:  Value serializer for the RoutedEvent class 
//
//  Created:   04/28/2005 [....] 
//
//-----------------------------------------------------------------------

using System; 
using System.Collections.Generic;
using System.Text; 
 
namespace System.Windows.Markup
{ 
    internal class RoutedEventValueSerializer: ValueSerializer
    {
        public override bool CanConvertToString(object value, IValueSerializerContext context)
        { 
            return ValueSerializer.GetSerializerFor(typeof(Type), context) != null;
        } 
 
        public override bool CanConvertFromString(string value, IValueSerializerContext context)
        { 
            return ValueSerializer.GetSerializerFor(typeof(Type), context) != null;
        }

        public override string ConvertToString(object value, IValueSerializerContext context) 
        {
            RoutedEvent routedEvent = value as RoutedEvent; 
            if (routedEvent != null) 
            {
                ValueSerializer typeSerializer = ValueSerializer.GetSerializerFor(typeof(Type), context); 
                if (typeSerializer != null)
                {
                    return typeSerializer.ConvertToString(routedEvent.OwnerType, context) + "." + routedEvent.Name;
                } 
            }
            return base.ConvertToString(value, context); 
        } 

        static Dictionary initializedTypes = new Dictionary(); 

        static void ForceTypeConstructors(Type currentType)
        {
            // Force load the Statics by walking up the hierarchy and running class constructors 
            while (currentType != null && !initializedTypes.ContainsKey(currentType))
            { 
                System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(currentType.TypeHandle); 
                initializedTypes[currentType] = currentType;
                currentType = currentType.BaseType; 
            }
        }

        public override object ConvertFromString(string value, IValueSerializerContext context) 
        {
            ValueSerializer typeSerializer = ValueSerializer.GetSerializerFor(typeof(Type), context); 
            if (typeSerializer != null) 
            {
                int index = value.IndexOf('.'); 
                if (index > 0)
                {
                    Type type = typeSerializer.ConvertFromString(value.Substring(0, index), context) as Type;
                    string name = value.Substring(index + 1).Trim(); 
                    ForceTypeConstructors(type);
                    return EventManager.GetRoutedEventFromName(name, type); 
                } 
            }
            return base.ConvertFromString(value, context); 
        }
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------ 
//
//  Microsoft Windows Client Platform
//  Copyright (C) Microsoft Corporation, 2005
// 
//  File:      RoutedEventValueSerializer.cs
// 
//  Contents:  Value serializer for the RoutedEvent class 
//
//  Created:   04/28/2005 [....] 
//
//-----------------------------------------------------------------------

using System; 
using System.Collections.Generic;
using System.Text; 
 
namespace System.Windows.Markup
{ 
    internal class RoutedEventValueSerializer: ValueSerializer
    {
        public override bool CanConvertToString(object value, IValueSerializerContext context)
        { 
            return ValueSerializer.GetSerializerFor(typeof(Type), context) != null;
        } 
 
        public override bool CanConvertFromString(string value, IValueSerializerContext context)
        { 
            return ValueSerializer.GetSerializerFor(typeof(Type), context) != null;
        }

        public override string ConvertToString(object value, IValueSerializerContext context) 
        {
            RoutedEvent routedEvent = value as RoutedEvent; 
            if (routedEvent != null) 
            {
                ValueSerializer typeSerializer = ValueSerializer.GetSerializerFor(typeof(Type), context); 
                if (typeSerializer != null)
                {
                    return typeSerializer.ConvertToString(routedEvent.OwnerType, context) + "." + routedEvent.Name;
                } 
            }
            return base.ConvertToString(value, context); 
        } 

        static Dictionary initializedTypes = new Dictionary(); 

        static void ForceTypeConstructors(Type currentType)
        {
            // Force load the Statics by walking up the hierarchy and running class constructors 
            while (currentType != null && !initializedTypes.ContainsKey(currentType))
            { 
                System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(currentType.TypeHandle); 
                initializedTypes[currentType] = currentType;
                currentType = currentType.BaseType; 
            }
        }

        public override object ConvertFromString(string value, IValueSerializerContext context) 
        {
            ValueSerializer typeSerializer = ValueSerializer.GetSerializerFor(typeof(Type), context); 
            if (typeSerializer != null) 
            {
                int index = value.IndexOf('.'); 
                if (index > 0)
                {
                    Type type = typeSerializer.ConvertFromString(value.Substring(0, index), context) as Type;
                    string name = value.Substring(index + 1).Trim(); 
                    ForceTypeConstructors(type);
                    return EventManager.GetRoutedEventFromName(name, type); 
                } 
            }
            return base.ConvertFromString(value, context); 
        }
    }
}

// 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