// 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 System.Diagnostics;
using System.Text;
using Mono.Cecil;
namespace Mono.Linker
{
public static class MemberReferenceExtensions
{
public static string GetDisplayName(this MemberReference member)
{
switch (member)
{
case TypeReference type:
return type.GetDisplayName();
case MethodReference method:
return method.GetDisplayName();
default:
var sb = new StringBuilder();
if (member.DeclaringType != null)
sb.Append(member.DeclaringType.GetDisplayName()).Append('.');
sb.Append(member.Name);
return sb.ToString();
}
}
public static string GetNamespaceDisplayName(this MemberReference member)
{
var type = member is TypeReference typeReference ? typeReference : member.DeclaringType;
while (type.DeclaringType != null)
type = type.DeclaringType;
return type.Namespace;
}
}
}
|