Reflektierender Parametername: Missbrauch von C# Lambda -Ausdrücken oder Syntax -Brillanz? [geschlossen]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Reflektierender Parametername: Missbrauch von C# Lambda -Ausdrücken oder Syntax -Brillanz? [geschlossen]

Post by Anonymous »

Ich schaue mir die MVCCContrib -Gitterkomponente an und ich bin fasziniert, aber gleichzeitig abgestoßen von einem syntaktischen Trick, der in der Gittersyntax verwendet wird: < /p>

.Attributes(style => "width:100%")
< /code>

Die obige Syntax legt das Stilattribut des generierten HTML auf Breite fest: 100%< /code>. Wenn Sie nun aufpassen, ist der Stil nirgends angegeben. Es wird aus dem Namen Name des Parameters im Ausdruck abgeleitet! Ich musste mich darauf eingraben und fand, wo die 'Magie' passiert: < /p>

Hash(params Func[] hash)
{
foreach (var func in hash)
{
Add(func.Method.GetParameters()[0].Name, func(null));
}
}
< /code>

In der Tat verwendet der Code die formale Zeit, die Zeit des Parameters kompilieren, um das Wörterbuch von Attributname-Wert-Paaren zu erstellen. Das resultierende Syntaxkonstrukt ist in der Tat sehr ausdrucksstark, aber gleichzeitig sehr gefährlich. Ich sehe ein Beispiel in einem Buch mit der Aufschrift Collection. Aber mit der MVCContrib -Gittersyntax hier plötzlich finde ich Code, der aktiv aussieht und Entscheidungen trifft, die auf den Namen, die ich für meine Variablen auswähle, aktiv entscheidet! Oder ist ein Schurken -One -Trick -Maverick, über den ich mir keine Sorgen machen sollte?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post