2013-07-12 4 views
0

VB.net으로 작성된 기본 클래스가 있습니다. 이 기본 클래스에는 속성이 있습니다. 그 vb 클래스에서 구동되는 C# 클래스가 있습니다. 나는 가치를 부여 할 수 있도록 여기서 재산을 설정할 필요가있다. 이 내 C# 클래스WriteOnly 속성에 대한 액세스

Public MustInherit Class FTPDownloaderBase 

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

입니다 : 이 vb.net 클래스 내 재산

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, 내가 ArrayList를 으로 기본 클래스에 도착, 내가 추가 한 공유 재산 FilesToDownload()를 추가 할 수 있습니다 생각 havn't는 반환 _filesToDownload 끝 세트 (ArrayList를로 ByVal의 값) _filesToDownload = 값 끝을 가져 오기 최종 속성 을 설정하면 작동합니다. 감사합니다. :) – Alma

0

당신은 기본 클래스를 수정하고 중 하나 get 접근을 추가하거나 추가해야 할 것 메서드를 호출하여 속성을 반환합니다.

+0

그래, 내 나쁜. 결정된. –