访问WriteOnly属性

时间:2013-07-12 18:18:11

标签: c# properties writeonly

我有一个用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#代码中为其赋值?

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

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

2 个答案:

答案 0 :(得分:0)

您必须修改基类并添加get访问器,或添加方法以返回属性。

答案 1 :(得分:0)

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

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

如果您无法更改基类:

return typeof(FTPDownloader.FTPDownloaderBase).GetFields(BindingFlags.NonPublic).Single(f => f.Name == "_filesToDownload").GetValue(this);