【问题标题】:Giving a Pointer to GetField.SetValue in Reflection在反射中提供指向 GetField.SetValue 的指针
【发布时间】:2014-12-01 12:56:24
【问题描述】:

解决了这个问题后,我的任务中出现了一个错误(previous question about ApiID)。使用反射我想设置一个字段,它是一个指针:

 public class TxObjectImpl : IDisposable
    {
     protected unsafe ApiId* _id;
    }

我尝试这样实现它:

object _apiId = new ApiId(); 
ApiId apiID = (ApiId)_apiId;
ApiId* pointer = &apiID;
typeof(TxObjectImpl).GetField("_id", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(_TxObjectImpl, pointer);

Visual Studio 给我这个错误:

参数类型“ApiId*”不可分配给参数类型“对象”

这甚至可以通过反射实现吗?

【问题讨论】:

    标签: c# pointers object reflection


    【解决方案1】:

    你必须先将指针指向IntPtr

    .SetValue(_TxObjectImpl, (IntPtr) pointer)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 2019-12-19
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多