使用.NET magic get set是最佳实践吗?

时间:2011-09-19 12:30:05

标签: asp.net-mvc-3 c#-4.0

可以在代码中使用它(在mvc 3上下文或任何其他上下文中):

protected String test { get; set; }

想知道为什么会这样,如果你有任何答案,为什么不这样。

感谢。

2 个答案:

答案 0 :(得分:2)

这只是一种便利。

它所做的只是删除锅炉板代码,因为它确实等同于

private String _test;
protected String test{
 get{
  return _test;
 }
 set{
  _test = value;
 }
}

所以,当它就是这样的时候,使用魔法套装。 当你需要做一些更时髦的事情时,请实现getsetters。

例如,在MVC中,我经常想为我的属性使用Enums,但CodeFirst不支持它。所以,我这样做:

[Column("Type")]
public byte DBType;
public MyCustomEnum Type{
 get{
  return (MyCustomEnum)DBType;
 }
 set{
  DBType = (byte)value;
 }
}

这会按预期填充我的数据库。

答案 1 :(得分:1)

完全没问题。与使用具有手动支持的完整属性完全相同,只是它的支持由编译器自动生成。如果您需要更好地控制get-set的实现,请务必使用详细语法,但如果您只需要简单的属性(例如,对于MVC中的VM属性),请使用此语法,因为它使代码更具可读性和直截了当。