2013-07-12 105 views
0

我有一個寫在VB.net中的基類。這個基類有一個屬性。我有一個C#類,從這個VB類驅動。我需要在這裏設置屬性,所以我可以給它一個價值。 這是我在vb.net類屬性:訪問WriteOnly屬性

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; 
     } 


    } 

}

,但我得到就行了這個錯誤:返回base.FilesToDownload; 屬性或索引器'FTPDownloded.FtpDownloderbase.FilesToDownload'不能在此上下文中使用,因爲它缺少get訪問器。

我怎樣才能訪問這個屬性,並在我的C#代碼中給它一個值?

解決方案: 我有添加獲取對VB的基類,現在是接近這樣的:

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

回答

0

如果沒有get訪問器,則不能訪問該屬性,除非使用反射。

最簡單的解決方案是將Get訪問器添加到VB類,或使_filesToDownload受保護而不是私有。

如果你不能改變的基類:

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

謝謝charpler,我沒有帶想我可以添加到基類,我加入了公共財產FilesToDownload()作爲ArrayList的 獲取 返回_filesToDownload 最終獲取 設置(BYVAL值作爲ArrayList的) _filesToDownload =值 結束設置 結束屬性 它的工作原理,謝謝:) – Alma

0

你將不得不修改基類,要麼添加一個get訪問,或添加方法來返回屬性。

+0

是的,是我不好。固定。 –