Je dois transmettre des valeurs à une méthode, avec une indication si chaque valeur est spécifiée ou non spécifiée, puisque null est une valeur valide elle-même, et ne peut donc pas être interprétée comme "non spécifiée" ".Objet de valeur avec indicateur "specified"
J'ai pris l'approche générique et créé un conteneur simple pour de telles valeurs (voir ci-dessous), mais est-ce la bonne façon d'y aller? Y a-t-il de meilleures façons d'aborder ce problème - p. est-ce qu'une classe comme celle-là existe déjà dans le cadre?
public struct Omissible<T>
{
public readonly T Value;
public readonly bool IsSpecified;
public static readonly Omissible<T> Unspecified;
public Omissible(T value)
{
this.Value = value;
this.IsSpecified = true;
}
}
La signature de la méthode pourrait ressembler à ce qui suit, ce qui permet à l'appelant d'indiquer que certaines valeurs ne doivent pas être mises à jour (non spécifié), d'autres doivent être réglés sur null/une autre valeur (spécifiée).
public void BulkUpdate(int[] itemIds,
Omissible<int?> value1, Omissible<string> value2) // etc.
Voulez-vous que votre deuxième constructeur prenne un paramètre 'T' et n'en fasse rien? –
Ca me va. Je vous suggère d'utiliser un 'struct' au lieu d'un' class'. Vérifiez également le second 'constructor', le paramètre' value' n'est pas utilisé. – devundef
Oups, corrigé. Struct aussi une bonne idée. – bernhof