【发布时间】:2014-04-27 21:15:37
【问题描述】:
我已经搜索了一段时间并测试了几种方法,但我没有找到我正在寻找的答案。我会尽力解释。
我有一个包含多个字段/属性的对象。这些属性具有自定义属性。 我想要的是在不了解对象的所有知识的情况下从特定属性中获取自定义属性。
是基类
// FieldAttr has a public Text propery
public class TestObject
{
// Declare fields
[FieldAttr("prop_testfld1")]
public FLDtype1 testfld1 = new FLDtype1();
[FieldAttr("prop_testfld2")]
public FLDtype2 testfld2 = new FLDtype2();
[FieldAttr("prop_testfld3")]
public FLDtype1 testfld3;
}
public class FLDtype1
{
public string Value { get; set; }
}
public class FLDtype2
{
public Guid Value { get; set; }
}
public sealed class FieldAttr: System.Attribute
{
private string _txt;
public EntityFieldType(string txt)
{
this._text = txt;
}
public string Text { get { return this._text; } }
}
我希望能够在我的应用程序中执行此操作:
static void Main(string[] args)
{
TestObject test = new TestObject();
// (Option 1: preferred)
Console.WriteLine(test.testfld1.getFieldAttr().Text);
// (Option 2)
Console.WriteLine(test.getFieldAttr(test.testfld1).Text);
}
这可能吗?我已经看到了从对象的所有属性/字段获取自定义属性值的方法,但不是针对特定字段。
我有一种工作方法可以从枚举中获取自定义属性,但无法为对象字段/属性重新创建它。这是因为我无法获得我试图探索的字段的名称,因为(例如)test.testfld1.ToString() 给了我“ns.FLDtype1”。
期待答案:) (请原谅我的英语)
【问题讨论】:
-
你试过这种方式吗? link
-
是的。问题是 GetMethod("")/GetField("") 需要字段的字符串名称。我无法理解。
-
我不想透露姓名。我希望该字段返回自己的自定义属性。如果我能做到这一点,我可以创建一种更加动态的方式来处理这些字段。给定的示例是我想要做的简单表示。
标签: c# properties field custom-attributes