c# - 在 DisplayNameAttribute 派生类中获取属性和类名

标签 c# .net .net-4.5

我有一个类,其中一些属性具有 DisplayNameEx 属性,该属性派生自 DisplayNameAttibute:

public class Settings
{
    [DisplayNameEx("User")]
    public UserData User { get; set; }
}

public class DisplayNameExAttribute : DisplayNameAttribute
{
    public DisplayNameExAttribute(string id)
    {

    }
}

我将我的属性的名称全部作为字符串 id 传递,因此以这种方式编写代码会更容易:

public class Settings
{
    [DisplayNameEx()]
    public UserData User { get; set; }
}

我可以通过 CallerMemberName 属性获得的属性名称:

public class DisplayNameExAttribute : DisplayNameAttribute
{
    public DisplayNameExAttribute([CallerMemberName] string propertyName = null)
    {
        //propertyName I get, what about class name (Settings in my case)?
    }
}

是否也可以获取类名?

最佳答案

这是不可能的。在您的情况下,最好的方法是在属性的构造函数中使用带有类名的参数:

public class DisplayNameExAttribute : DisplayNameAttribute
{
    public DisplayNameExAttribute(string className = null)
    {

    }
}

然后像这样使用它:

public class Settings
{
    [DisplayNameEx("Settings")]
    public UserData User { get; set; }
}

关于c# - 在 DisplayNameAttribute 派生类中获取属性和类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29722862/

相关文章:

c# - Blazor Maui 应用程序不支持本地 Android 设备

c# - Visual Studio 2012 如何调试 "Unable to add reference to project x"错误?

c# - 将 key 转换为 VirtualKeyCode

c# - CryptoStream 的哈希输出

.net - MSBuild 和 F# 的 FAKE 有什么区别?

c# - 在 ASP.NET Web 窗体中管理长时间运行的任务的策略

c# - 使用值转换器将切换按钮绑定(bind)到枚举

c# - 用于 EF core 数据库更新的命令行连接字符串

c# - 缓冲 PropertyChanged 事件

c# - 如何异步执行 Azure 表存储查询?客户端版本 4.0.1