2011-01-22 3 views
3

저는 처음으로 F #을 처음 사용해 보았고 C# 프로젝트와의 상호 운용성을 가지고 놀았습니다.F # 유형의 공용 메소드에 속성을 추가하려면 어떻게해야합니까?

C# 프로젝트에 정의 된 사용자 지정 특성이 있고 새 F # 프로젝트에서 해당 프로젝트에 대한 참조가 추가되었습니다. "let"문에 속성을 정의하려고하면 "let"은 영구적으로 비공개이므로 속성이 작동하는 것은 중요하지 않습니다. "let"문을 "member"와 같은 다른 것으로 변경하려고하면 속성이 객체를 대상으로 지정할 수 없다고 말합니다. 함수를 공개하고 속성을 갖고 싶다면 함수를 어떻게 정의해야합니까?

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 

코드에 언급했듯이 문제가있는 것 같습니다. 내 속성은 메소드를 대상으로 만 설정되며 "let"문으로 설정할 수 있지만 "member"문에서는 설정할 수 없습니다. 나는 이것이 바보 같은 것이라고 확신하지만, 당신의 도움을 위해 미리 감사드립니다!

답변

3

이 시도 :

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

type test() = 
    [<myAttribute()>] 
    member this.func() = "test from f#" 
관련 문제