Доступ к 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, либо добавить метод для возврата свойства.