2009-07-20 5 views
8

C# 및 F #에서 사용되는 F #으로 작성된 라이브러리가 있습니다. 이 라이브러리는 네임 스페이스 random에서, 모듈 bar에, 클래스 foo를 정의모듈 v. 네임 스페이스 F #

#light 
namespace random 

module bar 

type foo() = ... 

을 지금, 나는 형 random.foo.bar을 소비 갈 때, C#을 인텔리 타입 random.foo에 중첩 형 bar,로 본다.

질문 : 네임 스페이스가 아닌 모듈에 외부 소비 코드를 정의하는 이점이 있습니까? 모듈은 함수를 그룹화하는 좋은 방법이라는 것을 알고 있지만 클래스는 무엇입니까?

+0

가능한 속임수, http : // stackoverflow .com/questions/795172/what-the-the-difference-between-a-namespace-and-a-module-in-f – harms

+1

일종의,하지만 나는 더 이상 f # interop에 대한 모범 사례를 찾고있었습니다. 즉, 하나는 다른 하나의 결과입니다. – kolosy

답변

16

다른 .Net 언어에서 사용하기 위해 F # 구성 요소를 게시하는 경우 공용 인터페이스의 모듈은 사용하지 말고 클래스, 구조체 및 열거 형을 포함하는 네임 스페이스에 고정해야합니다.

(참조 마 (모듈, 또는 닷넷 클래스를 게시 F 번호 구성 요소의 '내부'구현 세부있다. F 번호 - 단지 구성 요소 사이의 값, 함수 및 유형을 게시하는 중 편리한 방법입니다) this question에 대한 설명은 네임 스페이스와 모듈 사이의 '기술적 구별'에 대한 설명입니다.이 질문과 위의 대답은 '의도적 차이'에 대한 것입니다 (예 : 각각을 사용하도록 선택할 때).