结构中属性的MarshalAs



我正在尝试将getter和setter添加到此结构中,以便将其用作listView项源。问题是,这会导致MarshalAs无效,从而不允许编译。解决这个问题的最佳选择是什么?

属性"MarshalAs"对此声明类型无效。它只对"字段、参数、返回"声明有效。**

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct FileExplorerData
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 251)]
public string name { get; set; }
public FILETIME lastwrite { get; set; }
public bool type { get; set; }
public int size { get; set; }
};

您可以将底层字段指定为属性的目标

[field: MarshalAs(UnmanagedType.ByValTStr, SizeConst = 251)]
public string name { get; set; }

这在C#7.3+中有效。请参阅文档。

最新更新