2013-04-25 3 views
0

2 클래스의 기본 클래스 표시 개체를 유지하는 방법이 궁금합니다 (2 클래스 내부 유지)? 나는 C#을 사용하고있다.2 차 클래스를 1 차 클래스로 캡슐화하는 방법이 있습니까?

일종의 래퍼입니다. 그게 나쁜거야? 누군가가 예제 또는 링크를 제공 할 수 있습니까?

감사합니다 ...

+0

"2 등급 수업 표시"는 무엇을 의미합니까? –

+0

내부 클래스를 사용할 수 있습니다. –

+0

내부 클래스/데코레이터 패턴/상속 .... 나는 당신이 당신의 문제에 관해 더 구체적이어야한다고 생각한다 ... –

답변

1

이것에 대한 간단한 패턴은 당신이 공개 싶은 노출 속성, 중첩 클래스를 사용하는 것입니다.

public class MyClass 
{ 
    private class SubClass 
    { 
     int someValue; 
    } 

    private SubClass innerClass = new SubClass(); 

    public int SubValue 
    { 
     get { return innerClass.someValue; } 
     set { innerClass.someValue = value; } 
    } 
} 

당신이이 패턴을 확장 할 수 있습니다, 효과적으로 internal modifier를 사용하여 많은 개인 서브 클래스. 내부 개체는 본질적으로 동일한 어셈블리 내의 코드에 공용이며 다른 모든 곳에서는 비공개입니다. 래퍼를 공용으로 표시하고 각 자식을 내부로 표시합니다. 이렇게하려면 래퍼 클래스와 모든 하위 클래스를 별도의 프로젝트 (즉, 어셈블리)에 배치해야합니다. 새 프로젝트 내에서 각 클래스를 자체 파일에 정의 할 수 있습니다.

public class WrapperClass 
{ 
    private SubClass1 internalClass1 = new internalClass1(); 
    private SubClass2 internalClass2 = new internalClass2(); 

    public int SubValue1 
    { 
     get { return internalClass1.someValue; } 
     set { internalClass1.someValue = value; } 
    } 

    public int SubValue2 
    { 
     get { return internalClass2.someValue; } 
     set { internalClass2.someValue = value; } 
    } 
} 

internal class SubClass1 
{ 
    int someValue; 
} 

internal class SubClass2 
{ 
    int someValue; 
} 
+0

그게 작동 할 수 있지만 나는 그것이 100 클래스가 있으면 성능이나 오버 헤드가 발생할 것 같습니다. 그래서 제안 ?? – fletchsod

+0

@fletchsod 나는 꽤 이해하지 못한다. 하나의 커다란 공용 래퍼 클래스 내에서 호스팅 할 100 개의 내부 클래스가 있다는 것을 의미합니까? 또는 100 쌍의 래퍼/하위 클래스가 있으며 중첩 패턴을 코딩하는 데 시간을 낭비하지 않으려 고합니다. –

+0

네, 100 개의 별도 클래스 (별도의 파일 0이 하나의 공용 래퍼 클래스로 묶입니다.) – fletchsod