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".
如何获取属性的实例化名称?
谢谢.
下面是我想要像你一样工作的扩展方法:
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中的表达式树
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |