2017-12-18 5 views
0

나는 다양한 제조업체 DMM의 Racal_xxxxx Agilent_Xxxxx Fluke_xxxxx를 나타내는 여러 네임 스페이스를하나를 선택하고 공통의 이름으로 위쪽으로 전달하려는

내가 알고있는 것처럼, 제가 시행됩니다 인터페이스를 쓸 수 있습니다 위의 모든 기능이 동일합니다.

내가 Test_Station에서이 방법으로 원하는 것을 할 수 있습니다

public Racal_4152A_DMM.main dmm = new Racal_4152A_DMM.main(); 

을 내가 위로 다음 클래스에서 사용할 수 있습니다, Test_Exec

은 공개하지 않고 위로 DMM을 통과 어쨌든 거기 ?

그리고 정말로 비공개로 설정해야합니까?

계층은 :

Test_Exec은 (DMM으로 Racal_4152A_DMM를 사용할 필요가 있지만 Test_Station에서와 같은 할당해야)

Test_Station

Racal_4152A_DMM

모두 별도 스페이스

있다

답변

1

네임 스페이스는 실제로 이름을 짓는 문제입니다. 액세스 권한과 관련하여 제한을 두지 않습니다. 따라서 클래스를 숨기려면 다른 클래스에서 래핑하고 비공개로 설정하거나 다른 프로젝트에 배치하여 내부 클래스로 만들어야합니다.

수업에서 래핑하는 방법을 알려 드리겠습니다. 이

IMultimeter dmm = MulimeterFactory.Create_Racal_4152A(); 

클래스 Racal_4152A 같은 디지털 멀티 미터를 만들 수 있습니다 이제 인터페이스

public interface IMultimeter 
{ 
    //TODO: declare members 
} 

public static class MulimeterFactory 
{ 
    private class Racal_4152A : IMultimeter 
    { 
     //TODO: Implement interface 
    } 

    private class Agilent_XXX : IMultimeter 
    { 
     //TODO: Implement interface 
    } 

    public static IMultimeter Create_Racal_4152A() 
    { 
     return new Racal_4152A(); 
    } 

    public static IMultimeter Create_Agilent_XXX() 
    { 
     return new Agilent_XXX(); 
    } 
} 

을 정의하는 것은 MulimeterFactory의 unvisible 외부 남아있다.

+0

감사하기 시작합니다. 감사합니다. – user3279899

+0

별도의 클래스 파일로이 작업을 수행 할 수 있습니까? 즉 : Agilent_XXXX.cs Fluke_xxxx.cs Racal_XXXX.cs 그래서 DMM 스왑 아웃 될 때 업데이트 필요가있는 유일한 것은 혼자 Test_Exec.cs을 떠나 Test_Station.cs에서 해당 라인입니다. – user3279899

+0

예, 팩토리를 partial :'public static partial class MulimeterFactory'로 선언 할 수 있습니다. 이렇게하면 동일한 어셈블리와 네임 스페이스 내의 다른 파일로 분할 할 수 있습니다. 나는. 'public static partial class MulimeterFactory' 선언을 여러 개 가질 수 있습니다. 부분 클래스는 물리적으로 분할되지만 여전히 하나의 단일 논리 클래스입니다. –

관련 문제