我正在为一个名为Fasterflect的库做出贡献,其目的是“改善开发人员使用反射的体验”。因此,它提供了一个建立在经典反射之上的抽象,并且可以在完全相同的场景中使用。
下面显示了通过对象实例访问成员的当前语法:
obj.SetPropertyValue( "PropertyWithPrivateSetter", "foo" );
obj.SetFieldValue( "_readOnlyIntegerProperty", 123 );
一位用户建议我们添加对基于 lamdba 的访问的支持(类似于 Fluent Hibernate):
obj.SetPropertyValue<MyClass>( x => x.PropertyWithPrivateSetter, "foo" );
obj.SetFieldValue<MyClass>( x => x.ReadOnlyInteger, Access.CamelCaseField(Prefix.Underscore), 123 );
考虑到反射通常是在编译时您不知道的类型上执行的,我很难考虑这将是有用的场景。我只是缺乏想象力吗?是否存在有效的反射场景,您在编译时就知道类型?
此 NBuilder 功能请求中的原始建议有一些额外的上下文,您还可以查看Fasterflect 功能请求。