| File: Internal\Reflection\Execution\PayForPlayExperience\MissingMetadataExceptionCreator.cs | Web Access |
| Project: src\runtime\src\coreclr\nativeaot\System.Private.Reflection.Execution\src\System.Private.Reflection.Execution.csproj (System.Private.Reflection.Execution) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using global::System; using global::System.Reflection; using global::System.Text; namespace Internal.Reflection.Execution.PayForPlayExperience { public static class MissingMetadataExceptionCreator { internal static NotSupportedException Create(Type pertainant) { return new NotSupportedException(SR.Format(SR.Reflection_InsufficientMetadata_EdbNeeded, pertainant)); } public static string ComputeUsefulPertainantIfPossible(MemberInfo memberInfo) { { StringBuilder friendlyName = new StringBuilder(memberInfo.DeclaringType.ToString()); friendlyName.Append('.'); friendlyName.Append(memberInfo.Name); if (memberInfo is MethodBase method) { bool first; // write out generic parameters if (method.IsConstructedGenericMethod) { first = true; friendlyName.Append('['); foreach (Type genericParameter in method.GetGenericArguments()) { if (!first) friendlyName.Append(','); first = false; friendlyName.Append(genericParameter); } friendlyName.Append(']'); } // write out actual parameters friendlyName.Append('('); first = true; foreach (ParameterInfo parameter in method.GetParametersAsSpan()) { if (!first) friendlyName.Append(','); first = false; friendlyName.Append(parameter.ParameterType); } friendlyName.Append(')'); } return friendlyName.ToString(); } } } }