我有一个用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
答案 0 :(得分:0)
您必须修改基类并添加get访问器,或添加方法以返回属性。
答案 1 :(得分:0)
如果没有get
访问者,则无法访问该属性,除非您使用反射。
最简单的解决方案是将Get
访问者添加到VB类,或使_filesToDownload
受保护而不是私有。
如果您无法更改基类:
return typeof(FTPDownloader.FTPDownloaderBase).GetFields(BindingFlags.NonPublic).Single(f => f.Name == "_filesToDownload").GetValue(this);