Динамически генерировать метод получения/установки свойства посредством отражения или аналогичного

Представьте себе следующий класс:

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

Я хотел бы иметь возможность написать что-то похожее на вышеприведенное и иметь настройки. Fooчитать из файла "foo.txt" и настройки. Foo = "bar"записать в "foo.txt".

Очевидно, что это упрощенный пример, и я бы не стал делать это в рабочем приложении, но есть и другие примеры, например, если бы я хотел, чтобы Foo сохранялся в состоянии сеанса ASP.net «foo», но мне надоело снова и снова пишу следующий код:

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;
    }
}

(еще раз этот пример упрощен, и я бы не стал писать приведенный выше код, на самом деле я лгу, у меня есть приведенный выше код, и я работаю над его рефакторингом, поэтому этот вопрос)

В приведенном выше примере все в порядке, если только у вас нет 50 различных значений сеанса, имеющих одинаковую логику. Итак, могу ли я каким-то образом преобразовать второе свойство во что-то похожее на первое? (Используя атрибуты и отражение, или, может быть, какой-то другой метод?)

5
задан thelsdj 4 April 2012 в 20:12
поделиться