簡體   English   中英

將內部可區分聯合的實例從 F# 初始化為 C#

[英]Initialize instance of internal discriminated union from F# to C#

我有一個通過 dll 從 F# 導出的可區分聯合類型,用於 C#:

type Argument =
  | IntValue
  | FloatValue
  | BoolValue of bool

在 C# 中,我可以初始化類似Argument.NewBoolValue(true)的東西,但是其他兩種類型IntValueFloatValue不是通過 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.

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