Consuming a C# class in F#
May 7, 2017 Leave a comment
F# and C# can work together pretty easily. Say that your domain classes are contained in a C# class library called Project.Domains. Let’s take the following Product class as an example:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Project.Domains { public class Product { public Product(string name, int price) { Name = name; Price = price; } public string Name { get; } public int Price { get; } public double CalculateDiscountedPrice(double percentageOff) { double discount = Price * percentageOff; return Price - discount; } } }
You can add a project reference to the Project.Domains C# library from an F# project. Rebuild the solution and then you can open the domain library with the F# open statement. It has the same purpose as a C# using statement:
open Project.Domains
From then on the C# classes in the Project.Domains library can be consumed with F# syntax:
let product = new Product("Table", 1000) let discountedPrice = product.CalculateDiscountedPrice(0.2) printfn "Discounted price: %f" discountedPrice
discountedPrice will be 800 as expected.
View all F# related articles here.