可移植类库反射GetField

Chr*_*ken 7 .net c# xamarin.ios portable-class-library

我目前正在尝试将Xamarin.iOS应用程序库转换为PCL.我有这个不能编译的代码:

    private void SetPrivateField<T>(object item, string fieldName, object value) {
        typeof(T).GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic)
            .SetValue(item, value);
    }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在尝试为类型设置私有字段.还有另外一种方法吗?

编辑 这编译.它会做同样的事情吗?

 private void SetPrivateField<T>(object item, string fieldName, object value) {
      typeof(T).GetRuntimeField(fieldName).SetValue(item,value);
 }
Run Code Online (Sandbox Code Playgroud)

Chr*_*ken 6

这最终成为正确的代码.

private void SetPrivateField<T>(object item, string fieldName, object value) {
    typeof(T).GetTypeInfo().GetDeclaredField(fieldName).SetValue(item,value);
}
Run Code Online (Sandbox Code Playgroud)