File: Internal\DefaultTypeNameResolver.cs
Web Access
Project: src\src\DataProtection\DataProtection\src\Microsoft.AspNetCore.DataProtection.csproj (Microsoft.AspNetCore.DataProtection)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Diagnostics.CodeAnalysis;
 
namespace Microsoft.AspNetCore.DataProtection.Internal;
 
internal sealed class DefaultTypeNameResolver : ITypeNameResolver
{
    public static readonly DefaultTypeNameResolver Instance = new();
 
    private DefaultTypeNameResolver()
    {
    }
 
    [UnconditionalSuppressMessage("Trimmer", "IL2057", Justification = "Type.GetType is only used to resolve statically known types that are referenced by DataProtection assembly.")]
    public bool TryResolveType(string typeName, [NotNullWhen(true)] out Type? type)
    {
        try
        {
            // Some exceptions are thrown regardless of the value of throwOnError.
            // For example, if the type is found but cannot be loaded,
            // a System.TypeLoadException is thrown even if throwOnError is false.
            type = Type.GetType(typeName, throwOnError: false);
            return type != null;
        }
        catch
        {
            type = null;
            return false;
        }
    }
}