c# - System.Reflection.PropertyInfo.GetValue() - 降级 .NET 版本 - 缺少方法签名

标签 c# .net reflection

要让 .NET 控制台应用程序在 Server 2003 上运行,我们必须将我们的核心库之一从 .NET 4.5 降级到 4.0。除此之外,这个库有一个执行一些反射的类,循环遍历对象的属性以使用 Propertyinfo.GetValue()

获取它们的值

根据 the MSDN documentation , PropertyInfo.GetValue (Object) 仅在 .NET 4.5 中。在 .NET 4.0 中,this method存在,但形式为 PropertyInfo.GetValue (Object, Object[])(额外的参数是为了知道如何处理索引属性)。

如果我们要降级此代码,我们需要知道当 PropertyInfo.GetValue Method (Object) 遇到索引属性时会发生什么,因此我们可以使用 PropertyInfo 镜像此功能。 GetValue 方法(对象,对象[])。谁能帮忙?

最佳答案

文档对此并不清楚,但检查反编译器中的实现表明 property.GetValue(obj)只需调用 property.GetValue(obj, null)没有任何检查,也没有发现任何异常。您将从 property.GetValue(obj) 获得的任何异常因此正是您将从property.GetValue(obj, null) 得到的异常,您应该可以毫无问题地更新您的电话。

关于c# - System.Reflection.PropertyInfo.GetValue() - 降级 .NET 版本 - 缺少方法签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043363/

相关文章:

javascript - Jquery C# 中的数据集值

c# - 单例查找表需要锁吗?

c# - 删除 1st Index 元素会导致表单不发布其他大于 1st 的索引

.net - 为什么我们不能在接口(interface)/抽象类中拥有共享(静态)函数/方法?

c# 对象初始化 - 可以通过非文字名称引用属性吗?

c# - 我无法捕获的 IOException

c# - 将多个ViewModel用于RibbonWindow(带有或不带有Caliburn Micro)

c# - 无法将源类型 'List<Person>' 转换为 IList<ISomething>

dart - 比较 Dart @override Metadata Reflectee 和 _Override 的实例

Java 反射处理数组