-1

我有一个 C 头文件:

typedef struct CallbackData
{
    Int 32          linkType;                   
    string          strUrl;                                   
} CallbackData

我在 C# 中有一个函数:

private Int32 CallbackFunction(IntPtr intPtr, Int32 callbackData, Int32 commandInfo, object callbackObject)
    {
    if (callbackObject.GetType() == typeof(CallbackData))
    {
           var callbackData = (CallbackData) callbackObject;
           callbackData.strUrl = "Something";
           return 0;
    }
    if (callbackData == 283)
    {
           return 0;
    }
    Console.WriteLine(callbackData);
    return 0;
}

我想将CallbackData结构导入 C#,然后检查callbackObject是否传递给CallbackFunctionisCallbackData类型。然后我想设置callbackObject.

我在另一个 C# 文件中创建了一个这样的结构:

[StructLayout(LayoutKind.Sequential)]
public struct CallbackData
{
    Int32 linkType;
    string strUrl;

}

VS 说“object不包含 for 的定义,并且找不到接受第一个类型参数的strUrl扩展方法(您是否缺少 using 指令或程序集引用?)”。如果它是类型,我如何编辑对象的 strUrl ?strUrlobjectCallbackData

编辑:改变了我投射传入参数的方式。

4

1 回答 1

0

在 C# 中默认情况下声明任何内容private,因此您需要像这样定义结构:

[StructLayout(LayoutKind.Sequential)]
public struct CallbackData
{
    public Int32 linkType;
    public string strUrl;
}
于 2013-06-17T19:53:49.403 回答