![](/img/trans.png)
[英]How to pass a discriminated union from C# to a F# function (F# - C# interop)
[英]Initialize instance of internal discriminated union from F# to C#
我有一個通過 dll 從 F# 導出的可區分聯合類型,用於 C#:
type Argument =
| IntValue
| FloatValue
| BoolValue of bool
在 C# 中,我可以初始化類似Argument.NewBoolValue(true)
的東西,但是其他兩種類型IntValue
和FloatValue
不是通過 F# 編譯器生成的類型,因此標記為內部,有沒有辦法在 Z623DFD7EFA19FBE247 中初始化它們?
如果判別聯合案例沒有任何有效載荷,則不會生成NewXXX
方法。 因為這種聯合案例的所有實例都是相同的,並且不需要創建 function。 所以改用靜態屬性
Argument.IntValue
Argument.FloatValue
在內部,這些屬性只返回相應用例的 singleton 實例:
internal static readonly Argument _unique_IntValue = new _IntValue();
public static Argument IntValue => _unique_IntValue;
在這個反編譯的代碼片段中可以觀察到更多有趣的細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.