首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.NET中传递对象数组

在.NET中传递对象数组
EN

Stack Overflow用户
提问于 2011-03-26 06:09:53
回答 1查看 628关注 0票数 0

我正在编写一个包装类,以公开来自企业分布式技术的.NET FTP库edtftpne的功能子集。

当您调用edtftp的GetFileInfos方法时,您会得到一个返回的FTPFile对象数组。我可以遍历它们,但我不知道如何将它们作为一个新的、不同的对象数组传递,该数组仅包含每个文件的名称和大小。这是我的代码。抱歉,它有点混乱,因为我有自己的类名为FTPFile,并且我正在使用的.NET库也有一个名为FTPFile的类。我在这里使用了这两种方法。为了避免混淆,我可能应该更改类的名称:

代码语言:javascript
复制
Public Function GetFileList() As FTPFile() Implements IFTP.GetFileList
    Dim ftpfiles() As EnterpriseDT.Net.Ftp.FTPFile
    ftpfiles = fCon.GetFileInfos 'Fill object array
    Dim f As EnterpriseDT.Net.Ftp.FTPFile
    Dim t As FTPFile = New FTPFile 'My custom class to hold FileName and FileSize for Each file
    For Each f In ftpfiles
        'What do I do here to put these in my GetFileList array?
    Next
End Function

我也不知道如何编写自己的FTPFile类,以便此函数可以将属性分配给它创建的每个对象,但外部COM代码会将我的FTPFile类的属性视为ReadOnly。

下面是我的FTPFile类的样子:

代码语言:javascript
复制
Public Interface IFTPFile
    ReadOnly Property FileSize() As Long
    ReadOnly Property FileName() As String
End Interface

<ClassInterface(ClassInterfaceType.None)> _
Public Class FTPFile : Implements IFTPFile
    Private sFileName As String = ""
    Private lFileSize As Long

    Public ReadOnly Property FileName() As String Implements IFTPFile.FileName
        Get
            FileName = sFileName
        End Get
        'Set(ByVal value As String)
        '    sFileName = value
        'End Set
    End Property

    Public ReadOnly Property FileSize() As Long Implements IFTPFile.FileSize
        Get
            FileSize = lFileSize
        End Get
        'Set(ByVal value As Long)
        '    lFileSize = value
        'End Set
    End Property
End Class

也许我的想法完全错了。我只是传递了从GetFileInfos方法获得的对象数组,但我假设,如果不重写它,COM客户端将无法访问类/对象EnterpriseDT.Net.Ftp.FTPFile。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-26 06:32:04

您必须创建要返回的数组,然后在循环中为数组创建对象:

代码语言:javascript
复制
Public Function GetFileList() As FTPFile() Implements IFTP.GetFileList
  Dim ftpfiles() As EnterpriseDT.Net.Ftp.FTPFile
  ftpfiles = fCon.GetFileInfos
  Dim result(ftpfiles.Length - 1) As FtpFile
  For i As Integer = 0 to ftpfiles.Length - 1
    result(i) = New FTPFile(ftpfiles(i).FileName, ftpfiles(i).FileSize)
  Next
  Return result
End Function

FTPFile类添加一个构造函数,以便可以在创建每个实例时设置属性:

代码语言:javascript
复制
Public Sub New(name As String, size as Long)
  sFileName = name
  lFileSize = size
End Sub

注意:不建议在变量名中使用匈牙利表示法来指定数据类型。VB是一种类型化语言,所以跟踪数据类型并不是那么重要,以至于你必须用它来弄乱变量名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5438659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档