57 lines
2.0 KiB
C#
57 lines
2.0 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Net;
|
|
using System.Reflection;
|
|
|
|
namespace BITKit
|
|
{
|
|
public static class DisplayAttributeExtensions
|
|
{
|
|
public static string GetDisplayName(this PropertyInfo self)
|
|
{
|
|
if (self.GetCustomAttribute<DisplayNameAttribute>() is not { } displayNameAttribute) return self.Name;
|
|
var name = displayNameAttribute.DisplayName;
|
|
return string.IsNullOrEmpty(name) ? self.Name : name;
|
|
}
|
|
public static string GetDisplayName(this FieldInfo self)
|
|
{
|
|
if (self.GetCustomAttribute<DisplayNameAttribute>() is not { } displayNameAttribute) return self.Name;
|
|
var name = displayNameAttribute.DisplayName;
|
|
return string.IsNullOrEmpty(name) ? self.Name : name;
|
|
}
|
|
public static string GetDisplayName(this object self)
|
|
{
|
|
{
|
|
if (self.GetType().GetCustomAttribute<DisplayNameAttribute>() is { } displayNameAttribute)
|
|
{
|
|
return displayNameAttribute.DisplayName;
|
|
}
|
|
#if NET5_0_OR_GREATER
|
|
if (self.GetType().GetCustomAttribute<DisplayAttribute>() is { } displayAttribute)
|
|
{
|
|
return displayAttribute.Name;
|
|
}
|
|
#endif
|
|
}
|
|
{
|
|
if (self is Enum)
|
|
{
|
|
var field = self.GetType().GetField(self.ToString()!);
|
|
|
|
if (field.GetCustomAttribute<DisplayNameAttribute>() is DisplayNameAttribute displayNameAttribute)
|
|
{
|
|
return displayNameAttribute.DisplayName;
|
|
}
|
|
#if NET5_0_OR_GREATER
|
|
if (field.GetCustomAttribute<DisplayAttribute>() is DisplayAttribute displayAttribute)
|
|
{
|
|
return displayAttribute.Name;
|
|
}
|
|
#endif
|
|
}
|
|
}
|
|
return self.ToString();
|
|
}
|
|
}
|
|
} |