在反射中提供指向 GetField.SetValue 的指针

本文关键字:GetField SetValue 指针 反射 | 更新日期: 2023-09-27 18:32:33

解决这个问题后,我的任务中还剩下一个错误(之前关于 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*"不可分配给参数类型"对象"

这在反射中甚至可能吗?

在反射中提供指向 GetField.SetValue 的指针

你必须先将指针投射到IntPtr

.SetValue(_TxObjectImpl, (IntPtr) pointer)