36 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using System;
							 | 
						||
| 
								 | 
							
								using System.Globalization;
							 | 
						||
| 
								 | 
							
								using System.Linq;
							 | 
						||
| 
								 | 
							
								using System.Reflection;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace WebAPI.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;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |