私は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"ステートメントでは設定できません。私はこれが愚かなものだと確信していますが、事前にあなたの助けに感謝します!