如何获取类对象的名称

时间:2011-04-02 09:29:23

标签: c# reflection

如何在表单类中获取TextLine类(PageHeadertextline1)的textline2个对象的名称,并将其显示在表单中。课程如下

class Textline
{
    string text;
    string name;
}

class PageHeader
{
    TextLine textline1;
    TextLine textline2;
}

3 个答案:

答案 0 :(得分:2)

假设您有pgHead的实例PageHeader。您可以通过以下方式获取textline1的名称:

pgHead.textline1.name

但是在此示例中,您应该在所有类成员之前添加public个关键字

[编辑] 如果您只想获取PageHeader类型的字段名称,请尝试如下反射:

var items = typeof(PageHeader).GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public);

string fieldsNames = "";

foreach (System.Reflection.FieldInfo fld in items)
{
    fieldsNames += fld.Name + "\n";
}

MessageBox.Show(fieldsNames);

答案 1 :(得分:1)

如果您使用Barna的答案,请不要忘记设置Name属性。我将介绍一个匹配的构造函数:

class TextLine
{
    private string text;
    private string name;

    public TextLine( string name )
    {
       this.name = name;
    }

    public string Name
    {
        get {return name;}
    }
}

然后将其用于:

TextLine tl = new textLine("MyName");
System.Console.Out.Writeln( "name of tl: {0}", tl.Name );

HTH

马里奥

答案 2 :(得分:0)

我想这就是你需要的:

class Textline
{
    string text;
    string name;
    public string Name { get { return name; } }
}

然后:

textline1.Name