【发布时间】:2011-05-12 21:22:33
【问题描述】:
有sizeof() 和typeof(),但为什么不是memberinfo() 返回System.Reflection.MemberInfo 的实例,用于帮助反射代码选择的代码部分。
例子:
Program()
{
Type t = typeof(Foo);
Foo foo = new Foo();
PropertyInfo pi = memberinfo(Foo.Name) as PropertyInfo;
// or shall it be like this
// PropertyInfo pi = memberinfo(foo.Name) as PropertyInfo;
string name = pi.GetValue(foo, null);
}
我试图了解是否有一个根本原因可以在 C# 规范中实现。
我不是在抨击什么,我只是在做一些一厢情愿的想法,所以请善待。
【问题讨论】:
-
它可能很容易实现。我也想要这样的东西。请注意,方法需要替代语法,因为它们可以重载,因此在这种情况下仅指定名称是不够的。
-
您可以使用表达式树创建类似的东西;这对属性和字段特别有效。
-
@Bryant 你有例子或链接吗?
-
这里有一个:stackoverflow.com/questions/671968/… 要更深入地了解从表达式树中提取成员信息,您可以查看 Moq 源代码(它们扩展使用 lambda 表达式来获取成员信息。 )
-
我一直想知道这个,类似的东西,我的意思是编译时反射!
标签: c# reflection language-design