You are previewing Programming F#.

Programming F#

Cover of Programming F# by Chris Smith Published by O'Reilly Media, Inc.

Appendix B. F# Interop

This book presents F# as a great language for helping you to be more productive and one that can also seamlessly integrate with the existing .NET stack. While it is true that F# is a great language, the word seamlessly may need to be qualified.

The dominant languages used in .NET today are C# and Visual Basic .NET, and while in F# you can write and call into object-oriented assemblies to interact with C# and VB.NET code, some concepts may get lost in translation.

This appendix is focused on how to ease interop with F#. By the end of this appendix, you’ll be able to identify problem areas when doing multilanguage programming. In addition, you’ll be able to make your F# interoperate with unmanaged (native) code using Platform Invoke and COM.


Although F# allows you to work with both C# and Visual Basic .NET, in this appendix, I’m just going to refer to C#, for convenience. Whenever you see the term C#, you can replace it with the phrase C# or Visual Basic .NET, depending on your preference.

.NET Interop

The key to interoperation between .NET languages is to make sure that the types and methods in the public surface area of a class library are available to all languages consuming the code. Intuitively, if a library exposes constructs that are not native to the consuming language, things can look a little strange.

C# Interoperating with F#

When writing F# code you should refrain from exposing functional types such as discriminated unions, records, and function values ...

The best content for your career. Discover unlimited learning on demand for around $1/day.