Я пытаюсь изучить F # путем преобразования существующего решения .NET Core на C # по одному проекту за раз. В настоящее время у меня есть интерфейс на C # со ссылочными типами, допускающими значение NULL:
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()
Я получаю сообщение об ошибке:
Ожидалось, что это выражение будет иметь тип 'string', но здесь тип 'Nullable ‹string›'
Похоже, что это не влияет на типы значений, поэтому я предполагаю, что это как-то связано с тем, что string
является ссылочным типом.
Что мне делать, чтобы решить эту проблему? Предположительно, я мог бы переписать базовый интерфейс, чтобы использовать F # и, следовательно, параметры, но есть другие проекты C #, которые реализуют интерфейс, и я не хочу, чтобы мне приходилось переписывать все решение за один раз. Или я совершенно неправильно делаю F #?