2013-07-11 2 views
0

VB.net으로 작성된 기본 클래스를 사용하여 C# 프로젝트에서 사용하고 있습니다. 이 기본 클래스에는 프로젝트에서 값을 부여해야하는 몇 가지 속성이 있습니다. 이러한 속성 중 하나에 액세스하는 데 문제가 있습니다. 다음과 같이protected enum에 대한 액세스

Public MustInherit Class FTPUploaderBase 
{ 

Private _protocol As FTPProtocol 

    Protected Property Protocol() As FTPProtocol 
    Get 
     Return _protocol 
    End Get 
    Set(ByVal Value As FTPProtocol) 
     _protocol = Value 
    End Set 
End Property 



Protected Enum FTPProtocol 
    FTP = 1 'Standard FTP (port 21) 
    SFTP = 2 'Secure FTP over SSH (port 22) 
    FTPS = 3 'Secure FTP over Implicit SSL (port 990) 
    FTPES = 4 'Secure FTP over Explicit SSL (port 21 - to forward to 443) 
End Enum 

} 

이 그 기본 클래스에서 DRIVED 내 C# 클래스는 다음과 같습니다 : 일관성 접근성 :

public class FTPUploadeClass:FTPUploader.FTPUploaderBase 
{ 

public FTPProtocol Protocol 
    { 
     get 
     { 
      return base.Protocol; 
     } 

     set 
     { 
      base.Protocol = value; 
     } 

    } 
    } 

이 프로토콜에이 오류를 보여줍니다 재산권

이 기본 클래스에 'FTPUPloaded.FTPUplodedBase.FTPProtocol'속성보다 '기본 기본 클래스 이름'입니다.

솔루션 : C# 클래스에서 Property의 이름을 변경했는데 작동합니다.

+0

왜 클래스 안에 중첩 열거로 시작하는 것입니다? 일반적으로 열거 형이해야 (즉, 오직 하나의 클래스 안에서만 사용됩니다.) – Servy

답변

0

FTPProtocol 형식의 public 속성은 기본 형식을 상속하지 않는 클래스에서 형식 자체를 볼 수 없으므로 선언 할 수 없습니다.

public에 열거의 가시성을 변경 작업을하거나 처음에 매핑 (그러나 public) 제 2 열거 형을 만들 수 있도록합니다.

+0

속성 작업을 수행하려면 'new'를 추가하고 그렇지 않으면 속성 이름을 변경하십시오 –

+1

I ha 속성의 이름을 변경하고 감사 Felix 작동합니다. – Alma

1

열거 형이 protected 인 이유가 있습니까?

그냥 FTPProtocol 열거 또한 public

하기 위해선, 파생 클래스의 속성은 기본 클래스와 같은 이름을해서는 안된다. 따라서 C# 파생 클래스의 속성을 Protocol 이외의 이름으로 바꿉니다.

+0

Protected Enum FTPProtocol을 public Enum FTPProtocol으로 변경했습니다.이 오류가 발생하지 않습니다 : ' 내 기본 클래스 이름은 여기에 상속 된 멤버 'MY C# 클래스 이름을 여기에 숨 깁니다.'숨겨진 의도가있는 경우 새 키워드 사용 – Alma