Domanda

Di cosa è bello JQuery Che è una grande libreria JavaScript è essere in grado di ottenere l'elemento su cui stai lavorando come valore di ritorno. Ecco un esempio di ciò che mi riferisco:

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

Quello che vorrei provare ad implementare qui è identico come sopra il codice per C# IDictionary interface. La mia intenzione è di essere in grado di correggere il codice come segue:

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

Quindi ho creato un metodo di estensione come di seguito per IDictionary :

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

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

E ora sono in grado di usarlo come:

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

Quindi, per quanto riguarda la domanda qui, quello che mi chiedo è se sto seguendo la strada giusta qui o no.

Quello che sto facendo fluentemente l'implementazione dell'interfaccia di un uomo povero o è totalmente estraneo a questo?

C'è qualche caso noto per questa implementazione in C#?

È stato utile?

Soluzione

Mentre il modello di implementazione è corretto (e uno comune in questo) il tuo caso d'uso non è probabilmente la scelta migliore. Oggetto Gli inizializzatori di raccolta funzionano anche per i tipi di dizionario:

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

Il compilatore trasforma magicamente questo in chiamate ADD (String, String). A proposito, la virgola apparentemente errata dopo l'ultima coppia è deliberata. Il compilatore lo consente in modo da poter semplificare la logica nei generatori di codice come T4.

Altri suggerimenti

Vorrei anche aggiungere qualcosa riguardo a "C'è qualche caso noto per questa implementazione in C#?"

Il StringBuilder.Append Il metodo restituisce il costruttore String, rendendo il metodo catena, come ad esempio sb.Append("a").Append("b"). Append("c").

Ma non ci sono molti altri esempi come quello in .NET.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top