File: Linker\KnownMembers.cs
Web Access
Project: src\src\tools\illink\src\linker\Mono.Linker.csproj (illink)
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
 
using ILLink.Shared.TypeSystemProxy;
using Mono.Cecil;
 
namespace Mono.Linker
{
    public class KnownMembers
    {
        public MethodDefinition? NotSupportedExceptionCtorString { get; set; }
        public MethodDefinition? DisablePrivateReflectionAttributeCtor { get; set; }
        public MethodDefinition? ObjectCtor { get; set; }
 
        public TypeDefinition? RemoveAttributeInstancesAttributeDefinition { get; set; }
 
        public static bool IsNotSupportedExceptionCtorString(MethodDefinition method)
        {
            if (!method.IsConstructor || method.IsStatic || !method.HasMetadataParameters())
                return false;
 
            if (method.GetMetadataParametersCount() != 1 || method.GetParameter((ParameterIndex)1).ParameterType.MetadataType != MetadataType.String)
                return false;
 
            return true;
        }
 
        public static bool IsSatelliteAssemblyMarker(MethodDefinition method)
        {
            if (!method.IsConstructor || method.IsStatic)
                return false;
 
            var declaringType = method.DeclaringType;
            return declaringType.Name == "ResourceManager" && declaringType.Namespace == "System.Resources";
        }
    }
}