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