Question

Ce qui est bien avec JQuery , qui est une excellente bibliothèque JavaScript, c'est de pouvoir obtenir l'élément sur lequel vous travaillezvaleur de retour.Voici un exemple de ce à quoi je fais référence:

$(function() { 
    $("#poo").css("clear", "both").css("margin", "10px");
});

Ce que je voudrais essayer d'implémenter ici est identique au code ci-dessus pour C # IDictionary interface.Mon intention est de pouvoir corriger le code comme suit:

IDictionary<string, string> myDictionary = 
    new Dictionary<string, string>().
        Add("key1", "value1").
        Add("key2", "value2").
        Add("key3", "value3");

J'ai donc créé une méthode d'extension comme ci-dessous pour IDictionary:

public static IDictionary<string, string> AddAndReturn(this IDictionary<string, string> dictionary, string key, string value) {

    dictionary.Add(key, value);
    return dictionary;
}

Et maintenant je peux l'utiliser comme:

IDictionary<string, string> poo = 
    new Dictionary<string,string>().
        AddAndReturn("key1", "value1").
        AddAndReturn("key2", "value2").
        AddAndReturn("key3", "value3");

Donc, en ce qui concerne la question ici, ce que je me demande, c'est si je suis le bon chemin ici ou non.

Est-ce que ce que je fais est une implémentation d'interface fluide ou totalement sans rapport avec ça?

Existe-t-il un cas connu pour cette implémentation en C #?

Était-ce utile?

La solution

Bien que votre modèle d'implémentation soit correct (et courant en plus), votre cas d'utilisation n'est probablement pas le meilleur choix.Les initialiseurs de collection Object fonctionnent également pour les types de dictionnaire:

var poo =  new Dictionary<string,string> {
        { "key1", "value1" },
        { "key2", "value2" },
        { "key3", "value3" }, // this is permissible
};

Le compilateur transforme par magie cela en appels Add (string, string).Btw, la virgule apparemment erronée après la dernière paire est délibérée.Le compilateur permet cela afin que vous puissiez simplifier la logique dans les générateurs de code tels que T4.

Autres conseils

Je voudrais également ajouter quelque chose concernant "Y a-t-il un cas connu pour cette implémentation en C #?"

La méthode StringBuilder.Append renvoie le StringBuilder, rendant la méthode chaînable, telle que sb.Append("a").Append("b"). Append("c").

Mais il n'y a pas beaucoup d'autres exemples comme celui-là dans .Net.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top