2009-12-17 2 views
5

Я хочу объявить два класса, которые связаны, поэтому я объявляю их вместе связанными 'и'. Каждый из них имеет различные атрибуты, но этот код не работает («Неожиданное ключевое слово„и“в определении» ошибка на ключевое слово «и». Как я должен объявить атрибуты второго класса?Можно ли определить разные атрибуты для рекурсивных классов в F #

[<AbstractClass>] 
type foo() = 
    abstract member fun1 : foo -> foo2 
[<Serializable>] 
and foo2() = class 
    member x.bar y = y 
end 

ответ

8

Это работает для меня. вы делали open System

open System 

[<AbstractClass>] 
type foo() = 
    abstract member fun1 : foo -> foo2 
and [<Serializable>] foo2() = class 
    member x.bar y = y 
end 

Edit: Ах, это, кажется, что второй атрибут должен быть пОСЛЕ and

2

Да, я открыл систему да и решение поместить его после..

Ta!