2009-06-12 6 views
5

J'ai deux classes, Foo et Bar, deux fichiers distincts, et foo.fs bar.fsDeux classes se "type n'est pas défini" erreur

namespace Ganymede.Versioning 

type foo = class 
    val Bar : bar 
    new(input) = { Bar = input }  
    end 


namespace Ganymede.Versioning 

type bar = class 
    val Test : string 
    new (input) = { Test = input; } 
    end 

Je reçois un « Le type 'bar' n'est pas défini." erreur à l'intérieur de la classe foo, pour val Bar : bar

Pourquoi est-ce?

Répondre

11

Les fichiers d'un projet doivent être triés par dépendances, vous devez donc placer bar.fs au-dessus de foo.fs dans le projet afin que foo puisse voir bar.

2

Voir this blog entry, mais brièvement, si vous ne spécifiez pas un espace de noms ou un module en haut d'un fichier, le code va implicitement dans un module nommé par le nom du fichier. Donc, si votre projet contient bar.fs et foo.fs (dans cet ordre, l'ordre compte), alors pour référencer le type 'bar' du fichier 'foo.fs' vous devez utiliser 'bar.bar' (où le premier est le nom du module, et le second est le nom du type).

+0

Mais comme vous pouvez le voir, j'ai un espace de noms défini?! – kitsune

+2

(Oups, désolé de ne pas remarquer l'espace de noms.) Les deux fichiers sont-ils dans le bon ordre dans le projet? – Brian

Questions connexes