Pregunta

Sólo estoy tratando de salir F #, por primera vez, y jugando con su interoperabilidad con los proyectos de C #.

He encargo atributos definidos en un proyecto de C #, y se añade una referencia a ese proyecto en mi nuevo proyecto F #. Cuando intento para definir los atributos de una declaración "dejar", el "let" está permanentemente privado y por lo que no importa que la obra atributos. Cuando intento cambiar el "let" comunicado a otra cosa, por ejemplo, "miembro", me han dicho los atributos no se identifique el objeto. ¿Cómo debería ser la definición de la función si quiero que sea pública y tienen atributos?

module FSharp

type public MyClass() = 
    class
        //this one will get the attributes, but is always private and can't be made public
        [<Core.NameAttribute("F# name")>]
        [<Core.DescriptionAttribute("F# desc")>]
        let f1 = "test from F#"

        //this one won't get the attributes, but is public and does return the value
        member this.Function1 = f1
    end

Como he indicado en el código, me parece que tienen un problema. Mis atributos se establecen únicamente a los métodos de destino, y que pueden ponerlos en los estados "let", pero no declaraciones "miembro". Estoy seguro de que esto es algo tonto, pero gracias de antemano por su ayuda!

¿Fue útil?

Solución

El problema es que su definición member es una propiedad, no es un método. Al igual que en la respuesta de Wesley, añadir algunos argumentos (sólo parens vacías está bien) para que sea un método.

(posiblemente véase también

http://blogs.msdn.com/b/timng/archive/2010/04/05/f-object-oriented-programming-quick-guide.aspx

y

http : //lorgonblog.wordpress.com/2009/02/13/the-basic-syntax-of-f-classes-interfaces-and-members/

)

Otros consejos

Prueba esto:

type myAttribute() =
    inherit System.Attribute()
    ;

type test() = 
    [<myAttribute()>]
    member this.func() = "test from f#"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top