При наличии интерфейса без элементов
type IFoo = interface end
можно создать экземпляр, используя выражение объекта
let foo = { new IFoo }
Однако, похоже, невозможно сделать то же самое сабстрактный класс, не имеющий абстрактных членов.
[<AbstractClass>]
type Foo() = class end
let foo = { new Foo() }
выдает ошибку: Неверное выражение объекта.Объекты без переопределений или интерфейсов должны использовать форму выражения 'new Type (args)' без фигурных скобок. Хорошо, мы знаем, что это тоже не сработает.
Вот хакерский обходной путь
let foo = { new Foo() with member __.ToString() = base.ToString() }
Есть ли лучший способ создать выражение объекта для абстрактного типа без абстрактных членов?