Доступ к WriteOnly Property

У меня есть базовый класс, который написан на VB.net. Этот базовый класс имеет свойство. У меня есть класс C#, который взят из этого класса VB. Мне нужно установить свойство здесь, чтобы я мог дать ему значение. Это моя собственность в классе 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 ответа

Решение

Вы не можете получить доступ к свойству, если оно не имеет get Accessor, если вы не используете отражение.

Самым простым решением было бы добавить Get доступ к классу VB, или сделать _filesToDownload защищенный вместо частного.

Если вы не можете изменить базовый класс:

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

Вам придется изменить базовый класс и либо добавить метод доступа get, либо добавить метод для возврата свойства.

Другие вопросы по тегам