模块诉F#中的命名空间
问题描述:
我有一个用F#编写的库,由C#和F#使用。这个库定义了一个类foo
,在模块bar
,在命名空间random
:模块诉F#中的命名空间
#light
namespace random
module bar
type foo() = ...
现在,当我去消费型random.foo.bar
,C#智能感知将其视为bar
类型,嵌套在random.foo
类型。
现在的问题是:C#将外部可用代码定义到模块而不是名称空间中有什么优势吗?我明白模块是组合函数的好方法,但类怎么样?
答
如果您正在发布其他.Net语言使用的F#组件,那么您应该避免使用公共接口中的模块,并坚持包含类,结构和枚举的名称空间。
(模块或者是一种方便的方法来发布F# - 只成分,或作为一个发布.NET类的F#组件的“内部”的实施细则。中值,函数和类型)
(不要见this question讨论命名空间和模块之间的'技术区别'。这个问题和我上面的回答更多地是关于'故意的区别',例如,当你选择使用每一个时。)
可能的dupe,http:// * .com/questions/795172 /命名空间与模块之间的区别是什么 – harms 2009-07-20 19:37:44
有点类似,但我更多地寻找非f#interop的最佳实践。那就是说,一个是另一个的必然结果。 – kolosy 2009-07-20 20:40:02