2009-07-20 185 views
8

我有一個用F#編寫的庫,由C#和F#使用。這個庫定義了一個類foo,在模塊bar,在命名空間random模塊訴F#中的命名空間

#light 
namespace random 

module bar 

type foo() = ... 

現在,當我去消費型random.foo.bar,C#智能感知將其視爲bar類型,嵌套在random.foo類型。

現在的問題是:C#將外部可用代碼定義到模塊而不是名稱空間中有什麼優勢嗎?我明白模塊是組合函數的好方法,但類怎麼樣?

+0

可能的dupe,http:// stackoverflow .com/questions/795172 /命名空間與模塊之間的區別是什麼 – harms 2009-07-20 19:37:44

+1

有點類似,但我更多地尋找非f#interop的最佳實踐。那就是說,一個是另一個的必然結果。 – kolosy 2009-07-20 20:40:02

回答

16

如果您正在發佈其他.Net語言使用的F#組件,那麼您應該避免使用公共接口中的模塊,並堅持包含類,結構和枚舉的名稱空間。

(模塊或者是一種方便的方法來發布F# - 只成分,或作爲一個發佈.NET類的F#組件的「內部」的實施細則。中值,函數和類型)

(不要見this question討論命名空間和模塊之間的'技術區別'。這個問題和我上面的回答更多地是關於'故意的區別',例如,當你選擇使用每一個時。)