Thomas Bandt

Über mich | Kontakt | Archiv

.NET 3.5 - Schicke neue Sprachfeatures von C#

Ich war nie ein Freund der großen O/R-Mapper, die tausende Zeilen Code und damit in meinen Augen riesigen Overhead produzieren - deshalb schreibe ich seit gut zweieinhalb Jahren sowohl meine Geschäftsobjekte als auch den Datenzugriff, d.h. das Befüllen meiner Objekte mit Daten aus der Datenbank, selbst.

Daraus resultiert relativ viel einmaliger Schreib- und Klickaufwand, wenn ich etwa ein Feld definiere und daraus dann vorzugsweise via Resharper eine Eigenschaft erstellen lasse. Das lässt sich jetzt z.B. elegant abkürzen.

Alt:

public class User
{

    private int id;
    private string name;
    private bool isActive;

    public int ID
    {
        get { return id; }
        set { id = value; }
    }
   
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
   
    public bool IsActive
    {
        get { return isActive; }
        set { isActive = value; }
    }
}

Neu:

public class User
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}

Dafür, dass in den Gettern und Settern sowieso zu 99,9% nix passiert und ich auch die privaten Felder innerhalb der Objekte nicht nutze, ist das eine absolut geniale Vereinfachung, die mir einiges an Zeitersparnis bringen dürfte.

Ebenfalls sehr praktisch in diesem Zusammenhang sind die neuen Möglichkeiten zur Erstellung neuer Objekt-Instanzen, die vor allem das lästige Schreiben von weiteren Konstruktoren erübrigt.

Alt:

public User()
{
}

public User(int id)
{
    this.id = id;
}

public User(int id, string name, bool isActive)
{
    this.id = id;
    this.name = name;
    this.isActive = isActive;
}

User u = new User(1, "Herbert", true);
User z = new User(5);

Neu:

User u = new User { ID = 1, Name = "Herbert", IsActive = true };
User z = new User { ID = 5 };

Noch schöner wird es beim Verwenden von Collections, in die man manuell Objekte hinzufügt, was bei Dummies nicht selten vorkommt:

UserCollection users = new UserCollection
{
    new User { ID = 1, IsActive = true, Name = "Alfred" },
    new User { ID = 2, IsActive = false, Name = "Klaus" },
    new User { ID = 3, IsActive = true, Name = "Jürgen" }
};

users.Add(new User { ID = 1, IsActive = false, Name = "Hannes" });

Kommentare

  1. Markus Bader schrieb am Donnerstag, 29. November 2007 12:16:00 Uhr:

    >> User u = new User { ID = 1, Name = "Herbert", IsActive = true };

    das liest sich ja schon fast wie Ruby :-)
    Fehlt eigentlich nur noch eine vernünftige Implementierung von ActiveRecord ... das scheitert aber vermutlich an der mangelnden Dynamik von C# - ohne MethodMissing-Mechanismus wird das nix werden :-(


« Zurück  |  Weiter »