有没有一种方法可以覆盖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
Run Code Online (Sandbox Code Playgroud)
可以提供多种类型来实现/覆盖包含具体类型的对象表达式。这使您既可以在表达式中指定Object
并INamedObject
在表达式中获得所需的效果。
let makeNamedObject name =
{
new System.Object() with
member x.ToString() = name
interface INamedObject with
member x.Name = name }
Run Code Online (Sandbox Code Playgroud)