【发布时间】:2008-09-24 12:42:50
【问题描述】:
我每次都使用右键>重构>封装字段来拥有我的访问器。问题是当我创建新类时,我可以拥有超过 10 个属性,并且每个访问器都需要 1 对 1 的时间。有没有更快的方法来创建它们?
感谢您的宝贵时间。
【问题讨论】:
标签: .net visual-studio refactoring
我每次都使用右键>重构>封装字段来拥有我的访问器。问题是当我创建新类时,我可以拥有超过 10 个属性,并且每个访问器都需要 1 对 1 的时间。有没有更快的方法来创建它们?
感谢您的宝贵时间。
【问题讨论】:
标签: .net visual-studio refactoring
如果你创建一个新的类,你可以使用代码 sn-ps 来创建封装的字段,而不是先创建字段然后封装它。在 C# 中,快捷键是 prop 和 propg(用于私有集)。
【讨论】:
看起来 Studio 内置的重构一次只支持一个字段,用于封装字段重构。重构专业版! (http://www.devexpress.com/Products/Visual_Studio_Add-in/Refactoring/) 或 Resharper (http://www.jetbrains.com/resharper/index.html) 都支持封装多个字段。
您可能会喜欢并组合一个允许您选择多个字段然后封装每个字段的宏,但 VS 宏不是我的蜡球。
【讨论】:
在 C# 3.0 中,新的属性语法让您无需声明字段并实现访问器。它们的语法如下:
public string Name { get; private set; }
另外,我想指出,对于内部成员,琐碎的属性对内部字段的价值很小,因为您可以控制调用者和实现 - 您可以在未来切换到一个属性,而无需大量工作.
即使对于公共成员来说,认为仅通过将公共数据字段添加到属性中就可以使代码适应未来的想法也是短视的。至少,您应该在构造函数(使用工厂)和接口(使用接口)周围添加间接。它还需要深入思考您的 API 的使用者将如何期望您在多个版本上工作。在我看来,这真的很难,而且只有当你是 API 供应商时才值得这样做。
在我的代码中,我使用属性的主要原因是很多使用反射的工具只关注属性而不是字段。我认为这是一个错误,但这就是工具的工作方式。
【讨论】: