0

我有一个用 VB.net 编写的基类。这个基类有一个属性。我有一个从该 vb 类驱动的 C# 类。我需要在这里设置属性,所以我可以给它一个值。这是我在 vb.net 类中的属性:

  Public MustInherit Class FTPDownloaderBase

   Public WriteOnly Property FilesToDownload() As ArrayList
    Set(ByVal Value As ArrayList)
        _filesToDownload = Value
    End Set
  End Property

这是我的 C# 类:

 public class FTPDownloaderClass:FTPDownloader.FTPDownloaderBase
{



  public Array FilesToDownloadC
  {
      get
      {
          return base.FilesToDownload;
      }


  }

}

但是我在线收到此错误:return base.FilesToDownload; 无法在此上下文中使用属性或索引器“FTPDownloded.FtpDownloderbase.FilesToDownload”,因为它缺少 get 访问器。

如何在我的 C# 代码中访问此属性并为其赋值?

解决方案:我在 VB 基类中添加了一个 Get,现在可以像这样访问它:

  Public Property FilesToDownload() As ArrayList
    Get
        Return _filesToDownload
    End Get
    Set(ByVal Value As ArrayList)
        _filesToDownload = Value
    End Set
End Property
4

2 回答 2

0

您必须修改基类并添加一个 get 访问器,或者添加一个方法来返回该属性。

于 2013-07-12T18:21:28.200 回答
0

如果没有访问器,则无法访问该属性get,除非您使用反射。

最简单的解决方案是将访问器添加Get到 VB 类,或者将其设为_filesToDownload受保护而不是私有。

如果不能更改基类:

return typeof(FTPDownloader.FTPDownloaderBase).GetFields(BindingFlags.NonPublic).Single(f => f.Name == "_filesToDownload").GetValue(this);
于 2013-07-12T18:21:45.467 回答