common/Service/MeterProcessState/Areas/HelpPage/ModelDescriptions/ModelNameHelper.cs
2026-04-23 17:50:07 +02:00

36 lines
1.4 KiB
C#

using System;
using System.Globalization;
using System.Linq;
using System.Reflection;
namespace Service.MeterProcessState.Areas.HelpPage.ModelDescriptions
{
internal static class ModelNameHelper
{
// Modify this to provide custom model name mapping.
public static String GetModelName(Type type)
{
ModelNameAttribute modelNameAttribute = type.GetCustomAttribute<ModelNameAttribute>();
if (modelNameAttribute != null && !string.IsNullOrEmpty(modelNameAttribute.Name))
{
return modelNameAttribute.Name;
}
String modelName = type.Name;
if (type.IsGenericType)
{
// Format the generic type name to something like: GenericOfAgurment1AndArgument2
Type genericType = type.GetGenericTypeDefinition();
Type[] genericArguments = type.GetGenericArguments();
String genericTypeName = genericType.Name;
// Trim the generic parameter counts from the name
genericTypeName = genericTypeName.Substring(0, genericTypeName.IndexOf('`'));
String[] argumentTypeNames = genericArguments.Select(t => GetModelName(t)).ToArray();
modelName = string.Format(CultureInfo.InvariantCulture, "{0}Of{1}", genericTypeName, string.Join("And", argumentTypeNames));
}
return modelName;
}
}
}