Introducció

F# és un llenguatge de programació funcional que s'executa en la plataforma .NET, la qual cosa permet una interoperabilitat fluida amb altres llenguatges .NET, com C#. Aquesta capacitat és crucial per aprofitar les biblioteques existents i integrar-se amb aplicacions escrites en C#. En aquest tema, explorarem com F# i C# poden treballar junts, incloent la crida a codi C# des de F# i viceversa.

Objectius

  • Entendre com referenciar i utilitzar biblioteques C# en projectes F#.
  • Aprendre a cridar funcions i mètodes C# des de F#.
  • Veure com exposar codi F# perquè pugui ser utilitzat des de C#.
  • Examinar exemples pràctics d'interoperabilitat.

Referenciar Biblioteques C#

Passos per referenciar una biblioteca C#

  1. Crear o obtenir la biblioteca C#: Si no tens una biblioteca C# existent, pots crear-ne una nova en Visual Studio o qualsevol altre IDE compatible amb .NET.
  2. Afegir la referència a la biblioteca en el projecte F#:
    • A Visual Studio, fes clic dret sobre el projecte F# i selecciona "Add Reference".
    • Navega fins a la biblioteca C# que vols referenciar i afegeix-la.

Exemple de codi C#

// C# Library: MyLibrary.cs
namespace MyLibrary
{
    public class Calculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }
}

Utilitzar la biblioteca C# en F#

// F# Project: Program.fs
open MyLibrary

[<EntryPoint>]
let main argv =
    let calculator = Calculator()
    let result = calculator.Add(3, 4)
    printfn "Result of addition: %d" result
    0

Cridar Funcions i Mètodes C# des de F#

Exemple Pràctic

Suposem que tenim una classe C# amb diversos mètodes que volem utilitzar en el nostre projecte F#.

// C# Library: Utilities.cs
namespace Utilities
{
    public class StringUtils
    {
        public string ToUpperCase(string input)
        {
            return input.ToUpper();
        }

        public bool IsNullOrEmpty(string input)
        {
            return string.IsNullOrEmpty(input);
        }
    }
}

Utilitzar els mètodes en F#

// F# Project: Program.fs
open Utilities

[<EntryPoint>]
let main argv =
    let stringUtils = StringUtils()
    let upper = stringUtils.ToUpperCase("hello")
    let isEmpty = stringUtils.IsNullOrEmpty("")
    printfn "Uppercase: %s" upper
    printfn "Is empty: %b" isEmpty
    0

Exposar Codi F# a C#

Crear una Biblioteca F#

// F# Library: MyFSharpLibrary.fs
namespace MyFSharpLibrary

type MathOperations() =
    member this.Multiply(a: int, b: int) : int =
        a * b

Utilitzar la Biblioteca F# en C#

  1. Afegir la referència a la biblioteca F# en el projecte C#:

    • A Visual Studio, fes clic dret sobre el projecte C# i selecciona "Add Reference".
    • Navega fins a la biblioteca F# que vols referenciar i afegeix-la.
  2. Cridar el codi F# des de C#:

// C# Project: Program.cs
using System;
using MyFSharpLibrary;

class Program
{
    static void Main()
    {
        var mathOps = new MathOperations();
        int result = mathOps.Multiply(3, 4);
        Console.WriteLine($"Result of multiplication: {result}");
    }
}

Exercicis Pràctics

Exercici 1: Cridar una Biblioteca C# des de F#

  1. Crea una biblioteca C# amb una classe Person que tingui propietats Name i Age, i un mètode Greet que retorni una salutació.
  2. Referencia aquesta biblioteca en un projecte F#.
  3. Crea una instància de Person en F# i crida el mètode Greet.

Solució

// C# Library: PersonLibrary.cs
namespace PersonLibrary
{
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public string Greet()
        {
            return $"Hello, my name is {Name} and I am {Age} years old.";
        }
    }
}
// F# Project: Program.fs
open PersonLibrary

[<EntryPoint>]
let main argv =
    let person = Person(Name = "Alice", Age = 30)
    let greeting = person.Greet()
    printfn "%s" greeting
    0

Exercici 2: Exposar una Biblioteca F# a C#

  1. Crea una biblioteca F# amb una classe Converter que tingui un mètode ToFahrenheit que converteixi graus Celsius a Fahrenheit.
  2. Referencia aquesta biblioteca en un projecte C#.
  3. Crea una instància de Converter en C# i crida el mètode ToFahrenheit.

Solució

// F# Library: ConverterLibrary.fs
namespace ConverterLibrary

type Converter() =
    member this.ToFahrenheit(celsius: float) : float =
        celsius * 9.0 / 5.0 + 32.0
// C# Project: Program.cs
using System;
using ConverterLibrary;

class Program
{
    static void Main()
    {
        var converter = new Converter();
        double fahrenheit = converter.ToFahrenheit(25.0);
        Console.WriteLine($"25 degrees Celsius is {fahrenheit} degrees Fahrenheit.");
    }
}

Conclusió

La interoperabilitat entre F# i C# permet aprofitar el millor de tots dos llenguatges i integrar-se fàcilment amb l'ecosistema .NET. Hem vist com referenciar biblioteques, cridar mètodes i exposar codi entre F# i C#. Amb aquests coneixements, pots començar a combinar F# i C# en els teus projectes per obtenir solucions més robustes i flexibles.

© Copyright 2024. Tots els drets reservats