我有一个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
的{{1}}是否属于CallbackFunction
类型。然后我想设置CallbackData
的strUrl。
我在另一个C#文件中创建了一个这样的结构:
callbackObject
VS说“[StructLayout(LayoutKind.Sequential)]
public struct CallbackData
{
Int32 linkType;
string strUrl;
}
不包含object
的定义,并且没有可以找到接受类型为strUrl
的第一个参数的扩展方法strUrl
(是吗?缺少using指令或汇编引用?)“。如果对象的strUrl类型为object
?
编辑:更改了我投射传入参数的方式。
答案 0 :(得分:0)
默认情况下,在C#中将任何内容声明为private
,因此您需要像这样定义结构:
[StructLayout(LayoutKind.Sequential)]
public struct CallbackData
{
public Int32 linkType;
public string strUrl;
}