Attachment: Program.fs
Description: Binary data

Attachment: Controller.fs
Description: Binary data

Attachment: AssemblyInfo.fs
Description: Binary data


I have now managed to rewrite the ToolbarSample using F# and it seems to work perfectly.

There is however an issue with member fields and F#: F# compiles "fields" to IL-fields with an prefix underscore. In order to complete the rewrite I added a new constructor to ObjectiveCFieldAttribute that takes the name of the field to bind:

        public ObjectiveCFieldAttribute(String name)
   = name;

So to translate the following (member field-)snippet from C#:

    public NSWindow theWindow;

to F#:

    val mutable theWindow:NSWindow

(I think it is generally a good thing to be able to explicitly bind a .Net-field to any ObjC field you like so I believe this addition is useful even outside the scope of F#.)

This was the only change I had to make to the Monobjc code.

I do not mind sharing the code as it is right now but will spend some time cleaning it up and make it more F#-ish - as it is now it is a plain translation of the C#-code. The current state of the code is attached - if the list manager let it through.

Johan Kullbom

Reply via email to