我有struct
这样的
public struct InstrumentDefinition2
{
public int instrumentId;
public int Decimals;
public long MinPriceIncrement_Mantissa;
public short MinPriceIncrement_Exponent;
public long RoundLot_Mantissa;
public short RoundLot_Exponent;
public char MsgType; // 'd' - Security Definition 'f' - Security Status?
}
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
public delegate void InstrumentReplayCallback(ref InstrumentDefinition2 value);
它通过委托调用从这个 c++ 结构构造:
typedef struct _InstrumentDefinition {
int32_t instrumentId;
int32_t Decimals;
int64_t MinPriceIncrement_Mantissa;
int16_t MinPriceIncrement_Exponent;
int64_t RoundLot_Mantissa;
int16_t RoundLot_Exponent;
char MsgType; // 'd' - Security Definition 'f' - Security Status
} InstrumentDefinition;
它工作正常。我不确定是否可以将 InstrumentDefinition2 声明为class
. 但我喜欢声明InstrumentDefinition2
为struct
,我认为它是关于“指向 C++ 内存块的指针”。
但是在处理过程中我需要将它复制到一个类中。所以我想声明非常相似C#
的类:
public class InstrumentDefinition
{
public int instrumentId;
public int Decimals;
public long MinPriceIncrement_Mantissa;
public short MinPriceIncrement_Exponent;
public long RoundLot_Mantissa;
public short RoundLot_Exponent;
public char MsgType; // 'd' - Security Definition 'f' - Security Status?
}
问题是如何将InstrumentDefinition2
结构复制到InstrumentDefinition
类?当然,我可以一一分配所有字段,但它会:
- 我想比较慢
- 容易出错(如果引入了新字段而我忘记添加它的“应对”怎么办?)
那么我可以在不应对每个领域的情况下以某种方式做到这一点吗?