[英]F# Namespaces/Modules and Interop with C#
我一直在嘗試使用F#,並希望嘗試在C#項目中使用它來處理某些可以從該語言中獲益的代碼。
我一直試圖弄清楚模塊和命名空間在C#項目中的使用方式。 例如,以下代碼:
namespace File1
#light
type File1(path : string) =
static member Trim(p : string) = p.Trim()
member self.Path = path
然后我嘗試在C#中使用它來說:
using File1;
class Program
{
static void Main(string[] args)
{
// Doesn't work
Console.WriteLine(File1.Trim(" hello "));
// Does work
Console.WriteLine(File1.File1.Trim(" hello "));
}
}
我理解為什么第二個有效,但為什么第一個不起作用呢? 我使用using聲明引入了命名空間,File1應該是一個類。 Trim是該類的靜態成員。
這不是由命名空間和類在F#中的行為方式引起的,你做對了。
問題是你有一個名為File1
的名稱空間和一個名為File1
的類。 在C#程序中編寫File1
時,即使using
正確,也表示“命名空間File1
”,而不是“類File1.File1
”。 例如,如果您將名稱空間的名稱更改為FileNamespace
,並將type
名稱更改為FileType
,則所有內容都將按預期工作。 (我不是說你應該在實際項目中使用這樣的命名。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.