내 네임 스페이스의 클래스로 다른 .NET 네임 스페이스에서 클래스를 노출시킬 수 있습니까?

StackOverflow https://stackoverflow.com/questions/138638

  •  02-07-2019
  •  | 
  •  

문제

내 네임 스페이스의 클래스로 다른 .NET 네임 스페이스에서 클래스를 노출시킬 수 있습니까? 클래스를 antlr.collections.ast- 내 네임 스페이스의 클래스에 속하는 함수의 반환 유형으로 사용합니다. 결과적으로 사용자는 가야합니다

using antlr.collections;
using myNamespace;

내 함수를 사용하기 위해 파일의 맨 위에 있습니다. mynamespace.ast를 antlr.collections.ast의 별칭으로 만들 수 있습니까?

using myNamespace;

파일 상단에?

도움이 되었습니까?

해결책

코드 소비자는 실제로 필요 진술을 사용하는 것. 그것들은 그들의 삶을 더 편하게 만들기 위해 거기에 있으므로, antlr.collections.foo 및 antlr.collections.bar를 소스에 입력 할 필요가 없습니다.

더 큰 "충격"(실제로 심각한 것이 있다면)은 코드의 소비자가 antlr.collections가 정의되는 어셈블리에 대한 어려운 참조가 필요하다는 것입니다.

그러나 그것이 앞에 문서화되어 있다면 솔직히 그렇게 큰 문제가되는 것을 보지 못합니다. 생성 된 DAL 어셈블리 및 원래 아 하위 닉 어셈블리에 대한 참조가 필요한 아록 소닉 생성 된 달의 소비자와 다르지 않습니다. (그리고 아마도 진술도 사용합니다.)

의존성은 그들이 무엇인지입니다. 클래스가 네임 스페이스로 나뉘어있는 이유가 있습니다. 주로 조직과 명명 충돌을 줄이는 데 필요한 이유가 있습니다. 당신이 언급 한 네임 스페이스에 어떤 클래스가 있는지 알지 못하면, 그러한 갈등이 실제로 당신의 시나리오에 얼마나 있을지 모르겠지만 ... 한 네임 스페이스에서 다른 네임 스페이스로 클래스를 옮기려고 시도하거나 필요한 사실을 숨기려고 시도합니다. 빈 클래스를 얻는 것은 아마도 최선의 아이디어가 아닐 것입니다. 다른 참조와 진술을 사용하는 것은 수업 소비자를 죽이지 않을 것입니다.

다른 팁

새 네임 스페이스에서 동일한 이름을 사용하여 클래스를 도출하는 것은 어떻습니까? 내말은:

namespace MyForms {
    class Class1 : Some.Other.Namespace.Class1 {
        // ...
    }
}

새 네임 스페이스에서 클래스를 상속하는 새 클래스를 만듭니다. 이상적이지는 않지만 단위 테스트 등에 유용합니다.

그래도 왜이 작업을 수행하는지 생각해야합니다. 클래스는 이유 때문에 네임 스페이스로 나뉩니다.

아니, 당신은 할 수 없습니다.

클래스의 전체 경로와 이름은 정체성의 일부입니다.

수업에서 파생되어 파생 수업을 반환하는 경우 리턴 유형에 대한 모든 문서를 제공 할 책임이 있습니다.

나는 당신이 당신의 도서관을 사용하는 개발자들에게 그들이 실제로 일하고있는 것이 반드시 antir.collections의 유형이라는 것을 알지 못하기 때문에 장애를 일으킬 것이라고 생각합니다 (나는 그것이 무엇인지 알지 못하지만 그것은 아닙니다. 요점). 개발자가 STACKOVERFLOW.COM에 오면 해당 반환 유형에 대한 정보를 검색하는 경우 유형이 "공통"라이브러리에서 나온 경우 정보를 찾을 가능성이 더 높습니까?

유일한 해결책은 antlr.collections.ast 유형에 전체 종속성을 숨기는 것입니다.

당신은 사용할 수 있습니다 어댑터 그 목적.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top