C#의 공용 클래스에서 동일한 어셈블리 내의 파생 클래스에만 필드/메서드를 액세스 할 수있게 만드는 방법이 있습니까? 나는 C#에서 protected internal
을 이해하는 것과동일한 어셈블리 내의 파생 클래스에만 필드/메서드를 액세스 할 수있게 만드시겠습니까?
내가 필요가 무엇 인 (파생 클래스 또는 동일한 어셈블리에서 클래스 즉, 액세스 가능) protected
또는internal
과 같은 것을 의미한다.
C#의 공용 클래스에서 동일한 어셈블리 내의 파생 클래스에만 필드/메서드를 액세스 할 수있게 만드는 방법이 있습니까? 나는 C#에서 protected internal
을 이해하는 것과동일한 어셈블리 내의 파생 클래스에만 필드/메서드를 액세스 할 수있게 만드시겠습니까?
내가 필요가 무엇 인 (파생 클래스 또는 동일한 어셈블리에서 클래스 즉, 액세스 가능) protected
또는internal
과 같은 것을 의미한다.
당신은 그것을에게 전화를 컴파일에서 외부 어셈블리에서 클래스를 방지 할 수 있지만, 당신은 당신의 protected 멤버에이 속성을 넣어 그들이 할 경우 런타임에 발생하는 예외를 강제 할 수
[System.Security.Permissions.StrongNameIdentityPermission(
System.Security.Permissions.SecurityAction.LinkDemand,
PublicKey = "...<Your assembly's full public key>...")]
클래스가 internal
인 경우 어셈블리 외부에서 클래스를 하위 클래스로 분류 할 수 없습니다. 필드/메소드를 protected
으로 만드십시오.
클래스가 public
이어야하는 경우 어셈블리 내에서 internal
하위 클래스를 사 용하십시오.
"내부"전용 필드/메소드를 공용 클래스에서 내부 클래스로 제거한 경우 어떻게 될까요? 그런 다음 해당 어셈블리의 모든 클래스는 내부 클래스에서 파생 될 수 있습니다.
public abstract class MyClass
{
public string Name { get; set; }
}
// Only classes in this assembly can derive from this class
internal abstract class InternalClass : MyClass
{
protected string Other { get; set; }
}
[MSDN] (http://msdn.microsoft.com/ko-kr/library/system)에 따라 C#에서는이를 지원하지 않습니다. .reflection.methodbase.isfamilyandassembly.aspx) :이 가시성을 가진 _Method는 Visual Basic 또는 C#에서 정의 할 수 없습니다. –