1
我正在讀取二進制文件中的結構集StructLayout(LayoutKind.Explicit)
集。我需要將這些數據移入一個具有Object[]
結構的DAO。而不是手動鍵入結構中的40個左右字段中的每一個,我只想使用反射並轉換所有不以「未知」開頭的元素。這是我到目前爲止。將結構轉換爲對象數組
[StructLayout(LayoutKind.Explicit, CharSet=CharSet.Ansi)]
struct ClientOld : IStuctToArray
{
[FieldOffset(0)]
public byte Active;
[FieldOffset(1)]
[MarshalAs(UnmanagedType.AnsiBStr)]
public string Title;
[FieldOffset(10)]
[MarshalAs(UnmanagedType.AnsiBStr)]
public string LastName;
[FieldOffset(36)]
[MarshalAs(UnmanagedType.LPArray, SizeConst = 2)]
public byte[] Unknown1;
(...)
[FieldOffset(368)]
[MarshalAs(UnmanagedType.AnsiBStr)]
public string AddedBy;
[FieldOffset(372)]
[MarshalAs(UnmanagedType.LPArray, SizeConst = 22)]
public byte[] Unknown7;
public object[] ToObjectArray()
{
return this.GetType().GetFields()
.Where(a => !a.Name.StartsWith("Unknown"))
.Select(b => /* This is where I am stuck */)
.ToArray();
}
}
我不知道要放什麼東西在所選區域,以便讓我的字段的值。 b.GetValue
要求你傳入一個對象,我不知道要傳遞什麼對象。
任何幫助將不勝感激。