可以将构造函数与类型相同的方式混为

  • 本文关键字:方式混 类型 构造函数 f#
  • 更新时间 :
  • 英文 :


考虑以下内容:

module Module1 =
  type Foo = Bar | Baz
  type Lorem = {Ipsum: int}
module Module2 =
  type Foo = Module1.Foo
  type Lorem = Module1.Lorem
  let foo = Bar // Error: The value or constructor 'Bar' is not defined
  let lorem = {Ipsum = 2} // Error: The record label 'Ipsum' is not defined

是否可以以简单的方式别名,并且仍然能够实际构造它们,而无需打开Module1

背景:我正在创建一个应用程序和相应的Web API。他们将通过序列化和应对pocos(pofos?)互相交谈。在该应用程序和Web API引用的项目中,在模块中可以使用其定义(对应于Module1)。API和类型是版本的,因此我想在应用程序和Web API中拥有一个Types模块(对应于Module2),我只是简单地别名API类型的最新版本(例如type Foo = Shared.V2.Foo),然后我使用这些应用程序和API中的这些别名,因为这意味着我不需要在应用程序/API上参考特定版本。(如果这是一个可怕的主意,请给我开枪。)

您的类型别名在现有代码中完全未使用。如果您通过限定这样的标识符来明确使用它们,则可以使用:

let foo = Foo.Bar
let lorem = {Lorem.Ipsum = 2}

最新更新