我正在使用类型提供程序来创建版本化的api,您可以选择选择要调用的组件的旧版本,而不是当前最新版本。
目前,它将这些放在一个类似于:
的命名空间中Provided.ComponentName.VersionName(... this is the type constructor ...)
ComponentName
目前是一个命名空间,如果这会产生影响。
一旦我构建了组件的所有特定版本,我还想公开:
Provided.ComponentName.Latest(... constructor ...)
作为静态方法或将返回最新版本实例的类型别名。
这样做的最佳方式是什么?
答案 0 :(得分:3)
我认为没有办法生成F#类型别名(这是将Latest
别名为特定版本类型的好方法。
作为替代方案,我认为您可以生成VersionName
作为嵌套类型,Latest
作为静态方法生成,返回相应的类型版本。为此,ComponentName
必须是包含其他类型和类型的类型。一种静态方法:
// Creates an instance of `VersionName`
// (a nested type of `ComponentName`)
Provided.ComponentName.VersionName(....)
// Creates an instance of `SomeVersionName` type
// (a static method of the `ComponentName` type)
Provided.ComponentName.Latest(....)
唯一令人遗憾的是VersionName
是一种类型(并且可以使用new
创建),而Latest
是一种静态方法,所以它不适用于{ {1}}。