我已经创建了一个自定义属性,用于我的类MyClass。我希望能够反思这个类的一个实例,以查看该属性中的信息。
假设我有这样的类定义:
public class MyClass
{
[Example("MyClassID")]
public string ID;
}
在我的代码后面,我将使用这个类的一个实例:
MyClass mc = new MyClass();
mc.ID = 18;
有没有办法从这个实例mc中获取属性值("MyClassID")?理想情况下,我希望能够以类似于以下的方式将其与我的房产联系起来:
mc.ID.GetCustomAttributes(typeof(ExampleAttribute), false)
是的,您可以通过反射来实现:
this.GetType().GetProperty("ID").GetCustomAttributes(typeof(ExampleAttribute))
如果这不是一个属性(在您的示例中不是,但我不确定这是否是问题的函数),那么您可以使用GetMember。
是的,您可以获取属性的值。这里有一个例子:
Type t = this.GetType();
var id = t.GetProperty("ID");
var attribute = id.GetCustomAttributes(typeof(ExampleAttribute), false).FirstOrDefault();
if (attribute != null)
{
ExampleAttribute item = attribute as ExampleAttribute;
//Do stuff with the attribute
}