Можно ли когда-нибудь вернуть record option
значение из F # в C # как нулевое значение? Я хочу инкапсулировать некоторую логику в сборку F # и скрыть как можно больше за фасадом, «более естественным для C #». Вот несколько синтетических примеров:
type Data = { DataField1: int; DataField2: string }
И код для возврата в C # будет выглядеть так:
type SomeFacade() =
let data = Some { DataField1 = 1; DataField2 = "hello" }
member x.GetData() = if Option.isSome data then Option.get data else null
Но нельзя использовать нулевое значение.
- Я мог бы попытаться использовать атрибут
[<AllowNullLiteral>]
, но его нельзя использовать для типов записей.
- Я мог бы использовать
Class
вместо Record
, но было бы сложнее работать с ним внутри F #, поскольку большая часть работы должна выполняться внутри части F #. И мне нравится чрезвычайно удобный способ создания значений записей путем копирования другого значения записи с использованием ключевого слова with
.
- Можно даже использовать
Data
в качестве записи внутри сборки F # и преобразовать ее в некоторый промежуточный класс DataClass
при работе с сборками C #, но это выглядит неловко.
Есть ли решение? (Я не собираюсь использовать нулевые значения внутри кода F #, но я хотел бы вернуть нулевые значения в код C #).