lunedì 27 gennaio 2025

C# utilizzo dell'attributo OverloadResolutionPriority per dare priorità ai metodi overload in .Net 9

Nel caso che si ha una classe di tipo "static" con metodo con lo stesso nome (overload ) anch'essi di tipo "static", non è possibile utilizzarli senza impostare il parametro.
Tramite l'attributo "OverloadResolutionPriority" possiamo definire delle priorità al metodo per evitare errori durante la compilazione.
Di seguito il frammento di codice.

Supponiamo di avere la seguente classe 

C#

public static class Anagrafica

{

    public static void NomeMetodo(int parametro = 0)

    {

        //Codice

        Console.WriteLine(parametro);

 

    }

 

    public static void NomeMetodo(string parametro = "")

    {

        //Codice

        Console.WriteLine(parametro);

 

    }

 

    public static void NomeMetodo(double parametro = 1)

    {

        //Codice

        Console.WriteLine(parametro);

 

    }

 

}



Quando viene chiamato il metodo, genera un errore di compilazione, come riportato qui di seguito.





Per evitare l'errore, si inserisce per ogni metodo l'attributo "OverloadResolutionPriority "
Di seguito il frammento di codice della classe con tale modifica.

C#

public static class Anagrafica

{

[System.Runtime.CompilerServices.OverloadResolutionPriority(2)]

public static void NomeMetodo(int parametro = 0)

{

    //Codice

    Console.WriteLine(parametro);

 

}

[System.Runtime.CompilerServices.OverloadResolutionPriority(1)]

public static void NomeMetodo(string parametro = "")

{

    //Codice

    Console.WriteLine(parametro);

 

}

[System.Runtime.CompilerServices.OverloadResolutionPriority(3)]

public static void NomeMetodo(double parametro = 1)

{

    //Codice

    Console.WriteLine(parametro);

 

}

     

 

}



Il codice non darà errori.

Nessun commento: