TL;DR
- オプション型を DTO にするときは、
Noneをnullに置き換える。 - 参照型をラップしているならそのままでよいが、値型をラップしているなら
Nullable<int>のような null 許容型に変換する。
内容
ドメイン型を DTO に変換する方法の 1 つである。
オプション型を DTO にするには、None を null に置き換える必要がある。ラップしている型によって扱いが変わる。
- 参照型をラップしている場合: 参照型は
nullを取れるので、そのままでよい。F# ではclass型やstringが参照型である(参照型 - C# reference) - 値型をラップしている場合: 値型は
nullを取れないので、Nullable<int>のような null 許容型に変換する(null 許容値型 - F#)。F# ではstruct型と、string以外の基本型が値型である(値型 - C# reference)
キーワード
自分の理解
F# の参照型を一覧にした公式ページは見つからなかった。ただ、F# は C# と同じ .NET 上で動くので、C# と同じはずだと考えている。
Swift でも構造体は値型、クラスは参照型だった。値型と参照型の区別は、言語をまたいだ共通認識として持っておいてよさそうだ。