Переопределение ToString при создании типа интерфейса с использованием выражения объекта - PullRequest
3 голосов
/ 08 ноября 2010

Есть ли способ переопределить виртуальные методы System.Object, особенно ToString, при создании типа интерфейса с использованием выражения объекта?

type INamedObject =
    abstract Name : string

let makeNamedObject name = 
    { new INamedObject with
        member x.Name = name
        override x.ToString() = x.Name } //would like to do this, but doesn't work

1 Ответ

5 голосов
/ 08 ноября 2010

Возможно реализовать несколько типов для реализации / переопределения в выражении объекта, включая конкретные типы. Это позволяет вам указывать Object и INamedObject в выражении и получать желаемый эффект.

let makeNamedObject name =  
    { 
        new System.Object() with 
            member x.ToString() = name
        interface INamedObject with
            member x.Name = name  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...