Выражение объекта для абстрактного класса без абстрактных членов - PullRequest
6 голосов
/ 16 ноября 2011

При наличии интерфейса без элементов

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() }

Есть ли лучший способ создать выражение объекта для абстрактного типа без абстрактных членов?

1 Ответ

1 голос
/ 17 ноября 2011

Не думаю, что есть лучший способ.

Я также не знаю, почему вы хотите это сделать (абстрактный класс без членов), но я просто предположу, что у вас есть свои причины, и оставлю это так:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...