한 - 라이너 질문은 의미를, 그래서 나 세부 내 도전을 허용하지 않습니다 및 회원. 모든 클래스, 유형 및 멤버는 해당 기본 네임 스페이스 (어셈블리 이름과 동일)입니다.여러 어셈블리에 걸쳐 C# 네임 스페이스를 확장하는 방법은 무엇입니까? 각 "내부"클래스 유형의 자신의 세트를 포함, 내가 3 DLL을 만든</p> <p>(<strong>MyUtils, MyConnector, MyAgent</strong>) :
MyAgent는 MyConnector에 대한 참조를 추가하고 해당 클래스 중 일부를 사용해야합니다. MyConnector는 MyUtils에 대한 참조를 추가하고 그 중 일부 클래스를 사용해야합니다. 현재 MyAgent는 MyUtils의 일부 유형에 액세스해야 할 수도 있습니다.
이제 MyUtils의 모든 유형과 멤버가 내부이므로 MyConnector에 대한 참조 및 MyConnector에서 MyAgent 로의 참조로 추가 할 수 없습니다. DLL에 직접 액세스하는 응용 프로그램을 원하지 않기 때문에 이러한 형식을 공개하지 않으려합니다.
이론적으로 여러 어셈블리에 걸쳐 네임 스페이스를 확장 할 수는 있지만 위의 시나리오를 실제로 달성하는 방법을 명확히 이해하지 못했습니다.
마지막으로 MyAgent.dll을 배포하여 EXE에 사용하려고합니다. 이 EXE는 MyAgent 메서드에서 반환되는 MyConnection 개체 (MyConnector에 포함 된 형식)를 제외하고 MyAgent의 공용 형식에만 액세스해야합니다. 여기에서도 내 액세스 지정자 (내부)가이 가능성을 제한합니다.
나는 이것을 너무 많이 모른 채 지금 완전히 혼란스러워하고 있습니다. 숙련 된 프로그래머의 조언을 매우 중요하게 생각합니다.
미리 감사드립니다. 여러 어셈블리를 통해 네임 스페이스를 스패닝
는
이 문제에 대한 해결책은 아니지만 공용 형식이없는 유틸리티 어셈블리의 가치에 의문을 제기합니다. 유틸리티 유형을 내부에 유지하려는 이유에 대해 자세히 설명해 주시겠습니까? –
아마도 나는 분명하지 않았습니다. 마지막 dll (MyAgent)에는 public 형식도 있으며, exe가 호출하는 형식입니다. 그러나 지원 요구 사항을 포함하고있는 다른 모든 어셈블리의 구현 세부 사항을 숨길 필요가있었습니다.공개적으로 만들면 intellisese 목록에 불필요한 잡음이 추가 될뿐만 아니라 exe 개발자가해서는 안되는 것을 가지고 놀 수있게합니다. –
어쨌든 공개적으로 얼마나 많은 것을해야할지에 대해서는 약간의 타협만으로 원하는대로 달성 할 수있는 방법을 찾은 것 같습니다. 그래서 나는이 문제를 해결할 것을 고려하고 있으며 새로운 질문을 던질 것입니다. 시간 내 줘서 고마워. –