Secondo WikiPedia
"Alcuni linguaggi non supportano i mixaggi a livello di lingua, ma possono facilmente imitarli copiando metodi da un oggetto all'altro in fase di runtime, quindi" prendendo in prestito "i metodi del mixin. Nota che questo è possibile anche con lingue tipizzate in modo statico, ma richiede la costruzione di un nuovo oggetto con il set esteso di metodi. "
1) Le funzioni di libreria statica di LinqExtensions (.Where ()) applicate alle raccolte di oggetti regolari (int []) che implementano IEnumerable fanno essenzialmente questo. Usano un nuovo oggetto (LinqExtensions) per aggiungere il set esteso di metodi (Where (), ecc.)
Conclusione. LinqExtensions sono mixins con tutte le classi che supportano IEnumerable.
2) Secondo WikiPedia
"Nei linguaggi di programmazione orientati agli oggetti, un mixin è una classe che contiene una combinazione di metodi di altre classi.Quando tale combinazione viene eseguita dipende dalla lingua, ma non è dall'ereditarietà.Se una combinazione contiene tutti i metodi di combinazione classi è equivalente all'ereditarietà multipla. "
Miscelando i ALL metodi delle classi che supportano IEnumerable (List.HashCode, List.ToString, altre funzionalità di base della gerarchia di elenchi), con i metodi ALL dalla libreria statica LinqExtensions (.Where (), Max (), ecc.) viene prodotto un equivalente all'ereditarietà .
Viene prodotto un equivalente all'ereditarietà multipla, sì o no?