有什么方法可以访问您在属性内部附加属性的类和属性名称?
例如
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/