BITKit/Src/Core/Extensions/DisplayAttributeExtensions.cs

57 lines
2.0 KiB
C#
Raw Normal View History

2024-12-13 16:14:20 +08:00
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;
}
2024-12-17 17:51:58 +08:00
#if NET5_0_OR_GREATER
2024-12-13 16:14:20 +08:00
if (self.GetType().GetCustomAttribute<DisplayAttribute>() is { } displayAttribute)
{
return displayAttribute.Name;
}
2024-12-17 17:51:58 +08:00
#endif
2024-12-13 16:14:20 +08:00
}
{
if (self is Enum)
{
var field = self.GetType().GetField(self.ToString()!);
if (field.GetCustomAttribute<DisplayNameAttribute>() is DisplayNameAttribute displayNameAttribute)
{
return displayNameAttribute.DisplayName;
}
2024-12-17 17:51:58 +08:00
#if NET5_0_OR_GREATER
2024-12-13 16:14:20 +08:00
if (field.GetCustomAttribute<DisplayAttribute>() is DisplayAttribute displayAttribute)
{
return displayAttribute.Name;
}
2024-12-17 17:51:58 +08:00
#endif
2024-12-13 16:14:20 +08:00
}
}
return self.ToString();
}
}
}