MultitargetingHelpers.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Versioning / MultitargetingHelpers.cs / 1305376 / MultitargetingHelpers.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
/*============================================================
** 
** Class:  MultitargetingHelpers 
**
** [....] 
**
**
** Purpose: Central repository for helpers supporting
** multitargeting, such as emitting the correct version numbers 
** and assembly names.
** 
** 
===========================================================*/
namespace System.Runtime.Versioning 
{
    using System;
    using System.IO;
    using System.Text; 
    using System.Diagnostics.Contracts;
 
    internal static class MultitargetingHelpers 
    {
 
        // default type converter
        private static Func defaultConverter = (t) => t.AssemblyQualifiedName;

        // This method gets assembly info for the corresponding type. If the typeConverter 
        // is provided it is used to get this information.
        internal static string GetAssemblyQualifiedName(Type type, Func converter) 
        { 
            string assemblyFullName = null;
 
            if (type != null)
            {
                if (converter != null)
                { 
                    try
                    { 
                        assemblyFullName = converter(type); 
                        //
                    } 
                    catch (Exception e)
                    {
                        if (IsSecurityOrCriticalException(e))
                        { 
                            throw;
                        } 
                    } 
                }
 
                if (assemblyFullName == null)
                {
                    assemblyFullName = defaultConverter(type);
                } 
            }
 
            return assemblyFullName; 
        }
 
        private static bool IsCriticalException(Exception ex)
        {
            return ex is NullReferenceException
                    || ex is StackOverflowException 
                    || ex is OutOfMemoryException
                    || ex is System.Threading.ThreadAbortException 
                    || ex is IndexOutOfRangeException 
                    || ex is AccessViolationException;
        } 

        private static bool IsSecurityOrCriticalException(Exception ex)
        {
            return (ex is System.Security.SecurityException) || IsCriticalException(ex); 
        }
 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

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