J'ai créé une classe mockup à illustrer la question:surcharge résolution dans les constructeurs génériques
public class Anything<T>
{
/// <summary>
/// Generic typed constructor
/// </summary>
/// <param name="param1"></param>
public Anything(T param1)
{
Console.WriteLine("I'm generic typed constructor");
}
/// <summary>
/// String typed constructor
/// </summary>
/// <param name="param1"></param>
public Anything(string param1)
{
Console.WriteLine("I'm string typed constructor");
}
}
Whats up si je construire quelque chose de l'objet string? Il n'y a aucun moyen de différencier les deux constructeurs. C'est une mauvaise pratique de définir un autre constructeur avec le même nombre de paramètres?
En fait, il y a moyen. Le compilateur utilisera une surcharge non générique si possible. Donc, ce n'est pas une mauvaise pratique s'il y a quelque chose de spécial sur la chaîne –
Quelle est exactement votre question? Comment cela fonctionne (lire à propos de la résolution de surcharge, voir en double), lequel sera appelé (l'exécuter) ou si c'est une mauvaise pratique (basée sur l'opinion)? Si vous fournissez un cas d'utilisation réel, des alternatives peuvent être affichées. Le cas d'utilisation vous expliquera pourquoi vous pensez avoir besoin d'une surcharge de chaîne en premier lieu, et à partir de là, vous verrez comment atténuer l'ambiguïté. Encore une fois, voir en double. :) – CodeCaster