2011-08-06 2 views
0

NetFx는 NuGet을 통해 제공되는 훌륭한 헬퍼 세트입니다. 그러나 나는 한 가지를 얻지 못합니다. 왜 모든 도우미 클래스가 내부 클래스입니까? 여러 프로젝트에서 도우미가 필요한 경우 어떻게 대처해야합니까?왜 NetFx 헬퍼가 내부적입니까?

업데이트. 내가 현재하고있는 일은 NetFx 클래스를 하나의 프로젝트에 배치하고 필요한 모든 클래스를 공개하고 다른 프로젝트에서이 어셈블리를 참조하는 것입니다. 그러나이 접근법은 NetFx를 업데이트하기 어렵게 만듭니다. 나는 수업을 반복해서 공개해야 할 것입니다.

+1

코드를 변경하는 것이 * 예상되는 * 것입니다. 그것들은 미리보기입니다. 어셈블리가 아니라 소스 코드를 얻습니다. –

+0

뭔가 잘못되었을 때 코드를 디버깅하고 패치 할 수있을 것으로 예상됩니다. 그러나 사소한 사용법에 대한 코드가 변경 될 것으로 예상됩니까? – SiberianGuy

+0

업데이트하기 어렵지 않습니다. NuGet은 수정 된 Visibility.cs를 절대 덮어 쓰지 않을 것입니다. – kzu

답변

1

짧은 대답 : 명시 적으로 designed to be that way이기 때문에. 나는. 도우미는 필요한 부분에 내부적이어야하며 "Common.dll 또는 Helpers.dll"에 덤프되지 않아야합니다. 이 결정에 대해 더 많은 배경을 가진 긴 대답은 (원본) 작성자 만 제공 할 수 있습니다.

원래 질문에 대해 : 당신은 아마도 여러 프로젝트에 그 헬퍼를 포함시킬 것입니다.

실제로 다른 어셈블리에 살기를 원하고 코드를 변경하지 않고 (내부를 공용으로 변경하려는 경우) 해당 어셈블리에 InternalsVisibleTo 특성을 사용하여 다른 모든 프로젝트/어셈블리를 나열 할 수 있습니다 그들을 사용합니다. 이것이 좋은 해결책이라는 것은 아닙니다. NetFx의 초기 설계에 대해 명시 적으로 작동하지만, 적어도 업데이트 할 때 수동 작업을하지 않아도됩니다.

전체적으로 ("공통"DLL 또는 엄격하게 로컬 함수) 그린 필드 결정을 내리지 않습니다. 둘 다 장단점이 있습니다. 하지만 그 부분에 대해서는 묻지 않았습니다. 즉, 이미 결정을 내린 것으로 보입니다 .-

+0

때때로 다른 프로젝트에 같은 도우미를 추가 할 수 없습니다. project1이 일부 netfx 클래스를 반환하면 어떻게 될까요? 이 경우에는 project1과 project2 (project1을 사용하는)에 대해 netfx에 동일한 프로젝트를 사용해야합니다. – SiberianGuy

+0

내부적 인 것을 반환 할 수 없습니다. 따라서 공개 할 필요가있는 경우 부분 클래스를 정의한 다음 공개로 표시하십시오. – kzu