C# 访问属性中的类和属性名

C# 访问属性中的类和属性名,c#,reflection,custom-attributes,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 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();

您的问题可以归结为“我可以检测自定义类实例化的位置吗?”。在我的最后一个例子中,可以使用。但是对于属性,它们是由.NET运行时构造的,因此您将无法执行该路线。

我不确定是否遵循您的推理(尽管总体答案可能仍然相同)。每个属性都是MyAttribute类自己的实例,因此每个属性都可以在其构造函数中接受不同的值并在本地存储。事实上,它可以装饰多个属性,这并不是我无法获取装饰类/属性的原因。我认为有一种方法可以在运行时确定该属性实例是什么类/属性attached@Peter-对不起,我澄清了我的答案。