структуры получили конструкторы по умолчанию, как если бы я сделал
type tagONEDEV_FlowRec =
struct
.......
end
Я могу сделать new DeviceModel.tagONEDEV_FlowRec()
, но это не работает:
let (<++|) device bytes size =
let unmanagedPtr = Marshal.AllocHGlobal(size : int)
Marshal.Copy( (bytes : byte array), 0, unmanagedPtr, size)
Marshal.PtrToStructure(unmanagedPtr, (device : obj)) // Here
Marshal.FreeHGlobal(unmanagedPtr)
Мне нужен класс записи здесьalike
[<type:StructLayout(LayoutKind.Sequential, Pack=1, CharSet=CharSet.Ansi)>]
type tagONEDEV_FlowRec = {
mutable ....;}
или
type tagONEDEV_FlowRec =
class
.......
end
, но здесь нет конструктора по умолчанию, и структуры очень велики, чтобы обнулять их вручную, так как я могу использовать такие классы с конструкторами по умолчанию?
Если я не найду решение, я думаю, что для меня будет быстрее перекодировать эту часть на C # или даже на VB.NET.Звучит как решение для костыля, но похоже, что я пока не могу набрать номер с помощью F # OOP.
добавление: я не хочу набирать:
{TimeRec = 0;
Num = 0us;
FlagErr = 0us;
C6 = 0.0;
C2H6 = 0.0;
C3H8 = 0.0;
CH4 = 0.0;
CO2 = 0.0;
iC4H10 = 0.0;
iC5H12 = 0.0;
neoC5H12 = 0.0;
N2 = 0.0;
nC5H12 = 0.0;
O2 = 0.0;
nC4H10 = 0.0;
He = 0.0;
H2 = 0.0;
H2O = 0.0;
id = 0us; }
<-это то, что я хочу иметь по умолчанию, потому что у меня гораздо больше лагерных структур, чем это, и написание таких конструкторов является злым. </p>