另一个对象中的对象名称

Mik*_*ter 4 c# reflection winforms

我有一个名为Prescriptions的课程.它具有其他类的属性.因此,例如,Fills的属性名称将来自PDInt类,该类具有关于我需要的值的其他属性.

如果我想在Prescription类中设置Fills属性的值,那就像是

Prescription p = new Prescription(); p.Fills.Value = 33;

所以现在我想取Fills属性的名称并将其填入winform控件的tag属性中.

this.txtFills.Tag = p.Fills.GetType().Name;
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我得到属性的基类,而不是属性名称.因此,我没有得到"填充",而是获得"PDInt".

如何获取属性的实例化名称?

谢谢.

Sae*_*iri 7

下面是我想要像你一样工作的扩展方法:

public static class ModelHelper
{
    public static string Item<T>(this T obj, Expression<Func<T, object>> expression)
    {
        if (expression.Body is MemberExpression)
        {
            return ((MemberExpression)(expression.Body)).Member.Name;
        }
        if (expression.Body is UnaryExpression)
        {
            return ((MemberExpression)((UnaryExpression)(expression.Body)).Operand)
                    .Member.Name;
        }
        throw new InvalidOperationException();
    }
}
Run Code Online (Sandbox Code Playgroud)

用它作为:

var name = p.Item(x=>x.Fills);
Run Code Online (Sandbox Code Playgroud)

有关方法如何工作的详细信息,请参阅.Net中的表达式树