2012-05-25 48 views
0

我想一个字节数组复制到一类是在第三方库字节数组复制到一个类的实例

Dim usr As New RSI_USER_RECORD 
    Dim ba(RSI_USER_RECORD.RSI_LEN_USER_REC - 1) As Byte 
    'populate ba here 
    usr = ba 'how can I do this? 

这甚至可能的存储位置?

下面是类(从反射器)

Public Class RSI_USER_RECORD 
    ' Methods 
    Public Function Clone() As RSI_USER_RECORD 
     Return New RSI_USER_RECORD With { _ 
      .pID = Me.pID.Clone, _ 
      .pTemplateVector = Me.pTemplateVector.Clone, _ 
      .authorityLevel = Me.authorityLevel, _ 
      .rejectThreshold = Me.rejectThreshold, _ 
      .timeZone = Me.timeZone _ 
     } 
    End Function 


    ' Fields 
    Public authorityLevel As RSI_AUTHORITY_LEVEL = RSI_AUTHORITY_LEVEL.RSI_AUTHORITY_NONE 
    Public pID As RSI_ID = New RSI_ID 
    Public pTemplateVector As RSI_TEMPLATE = New RSI_TEMPLATE 
    Public rejectThreshold As UInt16 = 0 
    Public Const RSI_LEN_USER_REC As Integer ModOpt(IsConst) = &H10 
    Public timeZone As Byte = 0 
End Class 
+0

那个类对象是如何最终以字节数组结尾的呢? –

+0

@HansPassant - 我正在从硬件设备读取一个数据块,该数据块返回为一个字节数组,每个16字节块是一个USER_RECORD –

+0

因此,它实际上是一个结构。 http://stackoverflow.com/a/1936208/17034 –

回答

0

定义在字节数组的每个数据具有在所述属性中的一个将被分配。基本上你将不得不这样做

authorityLevel = byte(someIndex) 
pID = byte(someIndex) 
pTemplateVector = byte(someIndex) 
rejectThreshold = byte(someIndex) 
timeZone =byte(someIndex) 
在你的代码

Dim usr As New RSI_USER_RECORD 
Dim ba(RSI_USER_RECORD.RSI_LEN_USER_REC - 1) As Byte 
'populate ba here 
usr = ba 'how can I do this? 

你不能在一个对象分配一个数组,但你可以使用数组初始化对象。像

dim anInstance as new RSI_USER_RECORD(ba) 

并创建一个新的构造函数来完成这项工作。

0
Dim usr As USER_RECORD() ' init the values 
    Dim ba As USER_RECORD() = New USER_RECORD(usr.Length - 1) {} 

    For i As Integer = 0 To usr.Length - 1 
     ba(i) = usr(i) ' if USER_RECORD is value type 
     'ba(i) = DirectCast(usr(i).Clone(), USER_RECORD) ' if USER_RECORD is reference type 

    Next 
+0

问题是,我有一个字节数组中的数据,我想基本上做一个内存副本到我的实例的USER_RECORD(这是一个类)的位置 –

+0

好的,你在寻找类似于缓冲区块副本的东西吗?您可以选中[Buffer.BlockCopy](http://msdn.microsoft.com/en-us/library/system.buffer.blockcopy.aspx),但需要从User_Record中提取字节数组 – Tilak

相关问题