F# DLL -> C# Krótki tutorial o tym, jak wykorzystać kod napisany w F# w C#

Krok pierwszy. Utwórz projekt “F# Library Project”. Nazwij go przykładowo “FsharpTestDLL”.

 

image

Do prezentacji dodajmy jakiś kod w F#.

namespace FSharpTestDLL

[<AbstractClass>]
type Animal() =
   abstract member MakeNoise: unit -> unit 

type Dog() =
   inherit Animal() 
   override this.MakeNoise () = printfn "woof"

module Math = 
   let square x = x * x
   let sumOfSquares n = 
   [1..n] 
   |> List.map square 
   |> List.sum

Utworzyliśmy klasę abstrakcyjną Animal oraz jej implementacje klasę Dog. Na końcu także napisaliśmy moduł, który będzie liczył sumę kwadratów.

Teraz zbuduj (build) projekt (F6). Powinna zostać utworzona dll-ka w folderze bin\debug.

Następnie utwórz projekt konsolowy w języku C#

image

Dodaj referencję do projektu F# oraz dodaj następujący kod do aplikacja konsolowej C#.

using System;
using FSharpTestDLL;

namespace CSharpConsoleFSharpDLLTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var d = new Dog();
            var c = new Cat();
            c.MakeNoise();
            d.MakeNoise();
            Console.ReadKey();
            var sum = FSharpTestDLL.Math.sumOfSquares(200);
            Console.WriteLine(sum);
            Console.ReadKey();
        }
    }

    class Cat : Animal
    {
        public override void MakeNoise()
        {
            Console.WriteLine("Meow");
        }
    }
}

Jak widać możemy dziedziczyć po abstrakcyjnej klasie utworzonej w F#. Możemy także w łatwy sposób napisać algorytmy liczące w F# i użyć ich później w C#.

image

Miłego programowania w F#.