c# - 访问属性中的类和属性名称

标签 c# reflection custom-attributes

有什么方法可以访问您在属性内部附加属性的类和属性名称?

例如

public class User {
    public string Email { get; set; }
    public string FirstName { get; set; }

    [MyAttribute]
    public string LastName { get; set; }
}

然后在MyAttribute类中

public class MyAttributeAttribute {
    public MyAttributeAttribute () : base() {
        string className = /*GET CLASS NAME - should return "User" */
        string propertyName = /*GET PROPERTY NAME - should return LastName*/
    }
}

我知道我可以在构造函数中传递信息,但希望有一种简单的方法可以通过反射或...以某种方式节省一遍又一遍地重新输入信息

最佳答案

抱歉,不,那是不可能的。你也可以

public class User {
    public string Email { get; set; }
    public string FirstName { get; set; }

    [MyAttrubute]
    public string LastName { get; set; }
}

[MyAttrubute]
public class OtherClass {

    [MyAttrubute]
    public string AnotherProperty { get; set; }
}

属性可以从任何地方创建。即使是以下也是创建实例的有效方法:

var att = new MyAttribute();

您的问题可以归结为“我可以检测我的自定义类是从哪里实例化的吗?”。在我的最后一个例子中,StackTrace大概可以用。但是对于属性,它们是由 .NET 运行时构建的,因此您将无法走那条路。

关于c# - 访问属性中的类和属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6867201/

相关文章:

c# - asp.net文件上传控件如何动态设置值?

c# - UWP 客户端使用 HttpClient 与 .NET Web API 通信,启用 SSL 时连接失败

c# - 递归遍历对象的属性抛出 StackOverflowException

Magento loadByAttribute 用于自定义类别属性

C#泛型问题

c# - 如何在同一个项目中同时拥有 MVC 和 Razor 页面?

c# - 如何从 MethodInfo 获取对方法的引用 (C#)

java - 无法找到类注释

html - 如何使用 .NET 数据注释属性附加自定义 HTML 属性或 CSS 类?

jquery - 浏览器未观察到 data-* 的更改,CSS 属性选择器属性未呈现