通过 lambda 表达式检索泛型方法中的静态字段
假设我得到了这个:
public class Foo{
public string Bar;
}
然后我想创建一个“静态反射”来检索 Bar 的值,如下所示:
public void Buzz<T>(T instance, Func<T, string> getProperty){
var property = getProperty(instance);
}
这应该可行。但如果 Foo 看起来像这样呢?
public class Foo{
public static string Bar = "Fizz";
}
我可以在不传递 Foo 实例的情况下检索 Bar 的值吗?
用法应该如下所示:
var barValue = Buzz<Foo>(foo=>foo.Bar);
Let's say i got this:
public class Foo{
public string Bar;
}
Then i want to create a 'static reflection' to retrieve value of Bar like this:
public void Buzz<T>(T instance, Func<T, string> getProperty){
var property = getProperty(instance);
}
That should work. But what if Foo looks like this?
public class Foo{
public static string Bar = "Fizz";
}
Can i retrieve value of Bar without passing instance of Foo?
Usage should look like:
var barValue = Buzz<Foo>(foo=>foo.Bar);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您将传递一个忽略其参数的 lambda,并使用
default(T)
作为要使用的“实例”:但我怀疑我有点错过了您的观点......
You'd pass in a lambda which ignored its parameter, and use
default(T)
for the "instance" to use:I suspect I'm missing your point somewhat though...
谢谢乔恩。
Thanks Jon.