Dynamisch erzeugen-Eigenschaft getter - /setter-durch Reflexion oder ähnliches

Stellen Sie sich die folgende Klasse:

public class Settings
{
    [FileBackedProperty("foo.txt")]
    public string Foo { get; set; }
}

Ich würde gerne in der Lage sein, etwas zu schreiben, ähnlich wie die oben genannten und haben settings.Foo aus der Datei Lesen "foo.txt" und settings.Foo = "bar" schreiben "foo.txt".

Offensichtlich dies ist ein Vereinfachtes Beispiel und ich würde es nicht tun, die oben in einer Produktion, die Anwendung, aber es gibt auch andere Beispiele, wie, wenn ich wollte, Foo abgelegt werden ASP.net Session state "foo", aber ich müde von dem schreiben der folgende code immer und immer wieder:

public int Foo
{
    get
    {
        if (Session["foo"] != null)
            return Convert.ToInt32(Session["foo"]);
        else
            //Throw an exception or return a default value
    }
    set
    {
        Session["foo"] = value;
    }
}

(Mal wieder das Beispiel ist vereinfacht, und ich würde nicht schreiben Sie den obigen code, eigentlich bin ich liegen, habe ich den obigen code und arbeite umgestalten, daher diese Frage)

Obigen Beispiel ist in Ordnung, es sei denn, Sie haben 50 verschiedene session-Werte, die alle haben ähnliche Logik. So ist es irgendwie, ich könnte konvertieren, die zweite Eigenschaft in etwas ähnlich wie die erste? (Verwendung von Attributen und Reflexion, oder vielleicht eine andere Methode?)

  • Wenn Sie mithilfe von Visual Studio sollten Sie einen Blick auf " code-snippets. Sie ermöglichen es, etwas kurze, erweitern Sie den gewünschten code und dann können Sie zu füllen-in den angegebenen Bereichen. Ähnlich der bestehenden propg, etc.
  • Das scheint nur so schlecht, wie copy/paste. Was ist, wenn ich ändern möchten die Umsetzung? Ich habe immer noch zurück zu gehen und ändern Sie jede Eigenschaft einzeln an.
  • So dass Sie wollen, um dynamisch hinzufügen von Eigenschaften zur Laufzeit? Sie haben alle server-Maschinen oder niedrige Erwartungen an Leistung? Nicht, dass du das nicht so, aber ich würde stark Vorsicht gegen ihn. Wenn Sie nicht, dass zur Laufzeit, dann würden Sie haben, sich zu regenerieren jeder code, den Ausgang sowieso.
InformationsquelleAutor thelsdj | 2012-04-04
Schreibe einen Kommentar