2012-01-19 4 views
0

클래스 A의 인스턴스를 보유하고있는 다른 클래스 (클래스 "B"), 즉 에서 사용해야하는 메서드가있는 클래스 "A"가 있습니다. 클래스 "B"는 내가 그 메서드를 사용하고자하는 유일한 클래스이기 때문에 나는 같은 어셈블리에 두 클래스를 가지고 있기 때문에 클래스 "A"의 메소드는 내부 일 수 있습니다. 어떻게 할 수 있습니까?다른 클래스의 클래스의 개인 메서드를 사용하는 방법이 필요합니다.

답변

0

ClassB: ClassA (파생 클래스) 인 경우 해당 메서드를 protected으로 선언 할 수 있으므로 파생 클래스에만 액세스 할 수 있습니다.

Exmaple는 :

public class ClassA 
{ 
    protected void FooA() { Console.WriteLine("A"); } 
    internal void FooB() { Console.WriteLine("B"); } 
} 

public class ClassB : ClassA 
{ 
    public void Foo() { FooA(); } 
} 

public class ClassC 
{ 
    public void Foo() 
    { 
     ClassA classA = new ClassA(); 
     classA.FooA(); // Error, because you don't see it 
     classA.FooB(); // OK 
    } 
} 
+0

ClassB에서 classA를 상속하는 것을 정말로 원하지 않습니다. classA에는 classB에서 필요성이없는 함수가 많으며 논리적으로도 잘못된 것입니다. –

+0

@ talzach : 당신이하려는 일을 논리적으로 부정확하다. 왜 다른 클래스의 ** 단지 ** 사용할 수있는 몇 가지 방법으로 클래스를 투영 하는가? 가상 클래스/메소드 또는 인터페이스를 사용하여 코드를 리 팩터링하십시오. – Marco

+0

어떻게 리팩토링해야합니까? –

0

당신은 항상 내부로 클래스 A의 메소드를 표시하고 어셈블리 정보 파일이 (가) InternallyVisibleTo 플래그를 설정할 수 있습니다?

관련 문제