Я пытаюсь выучить F #, преобразовав существующее. NET Базовое решение в C#, по одному проекту за раз. В настоящее время у меня есть интерфейс в C# с обнуляемыми ссылочными типами:
public interface IVehicle {
public int GetWheels();
public string? GetLicensePlate();
}
И этот интерфейс реализован в ряде других проектов, которые зависят от этого. Я пытаюсь преобразовать один из них, но если я пытаюсь
type Car(serialNumber: string) =
interface MyProjectInterfaces.IVehicle with
member this.GetWheels() = 4
member this.GetLicensePlate() =
match LicensePlateService.GetLicencePlate(serialNumber) with
| Some(x) -> System.Nullable(x)
| None -> System.Nullable()
, я получаю ошибку:
Ожидается, что это выражение будет иметь тип 'строка', но здесь имеет тип 'Nullable '
Это не влияет на типы значений, поэтому я предполагаю, что это как-то связано с string
, являющимся ссылочным типом.
Что мне сделать, чтобы решить эту проблему? Предположительно, я мог бы переписать базовый интерфейс, чтобы использовать F # и, следовательно, опции, но есть другие проекты C#, которые реализуют интерфейс, и я не хочу переписывать все решение в одном go. Или я делаю F # совершенно неправильно?