簡體   English   中英

F#中的命名空間別名?

[英]Namespace aliasing in F#?

使用時,我在F#代碼中打開一些.Net程序集時會出現名稱沖突問題

open System.IO

我現在找到並使用的唯一選項是為沖突類型提供類型的全名,但這有點無聊。

是否有可能在F#中為.Net命名空間定義別名以防止名稱沖突?

F#不支持名稱空間的別名 - 只支持模塊和類型。 因此,要解決.NET程序集之間的沖突,您將不幸地需要為您正在使用的所有類型定義別名。

由於F#類型別名被視為普通類型聲明(由F#編譯器,而不是運行時),因此這可能會稍微容易一些。 這意味着,與C# using keyword不同,您可以在spearate文件中定義它們:

// Aliases.fs
namespace SysIO

// Open the 'System' namespace to get a bit shorter syntax
// ('type File = File' is interpreted as discriminated union)
open System

type File = IO.File
type Directory = IO.Directory

在應用程序的其余部分中,您現在可以使用SysIO.File 您仍然必須編寫別名,但至少您不必在每個文件中都這樣做...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM