想象一下下面的类:
public class Settings
{
[FileBackedProperty("foo.txt")]
public string Foo { get; set; }
}
我希望能够编写与上述类似的内容,并settings.Foo
从文件“foo.txt”中读取并settings.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 个不同的会话值,它们都有相似的逻辑。那么有没有办法可以将第二个属性转换为类似于第一个属性的东西?(使用属性和反射,或者其他方法?)