簡體   English   中英

F#命名空間/模塊和C#Interop

[英]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.

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