评论C#的inheritance(实际上是任何语言)
假设我有这个接口
public interface IFoo { ///<summary> /// Foo method ///</summary> void Foo(); ///<summary> /// Bar method ///</summary> void Bar(); ///<summary> /// Situation normal ///</summary> void Snafu(); }
和这个class级
public class Foo : IFoo { public void Foo() { ... } public void Bar() { ... } public void Snafu() { ... } }
有没有办法,还是有一种工具,可以让我自动把每个成员在基类或接口的意见?
因为我讨厌为每个派生的子类重写相同的注释!
GhostDoc正是如此。 对于没有被inheritance的方法,它试图从名字中创build一个描述。
FlingThing()变成“甩东西”
您始终可以使用<inheritdoc />
标记。
public class Foo : IFoo { /// <inheritdoc /> public void Foo() { ... } /// <inheritdoc /> public void Bar() { ... } /// <inheritdoc /> public void Snafu() { ... } }
Java有这个,我一直都在使用它。 做就是了:
/** * {@inheritDoc} */
Javadoc工具将其解决。
C#有类似的标记:
<inheritDoc/>
你可以在这里阅读更多:
http://www.ewoodruff.us/shfbdocs/html/79897974-ffc9-4b84-91a5-e50c66a0221d.htm
Resharper可以从基类或接口复制注释。
我同意这是令人讨厌的评论是不是inheritance。 如果有人有时间(我希望我做的),这将是一个相当简单的插件。
也就是说,在我们的代码库中,我们只将XML注释放在接口上,并向类中添加额外的实现注释。 这对我们很有用,因为我们的课程是私人/内部的,只有界面是公开的。 任何时候我们通过接口使用这些对象,我们都会有完整的注释显示在intellisence中。
GhostDoc是一个好的开始,并且使得这个过程更容易写评论。 当添加/删除参数时,保持注释是最新的,重新运行GhostDoc会更新描述,这是非常有用的。
另一种方法是使用XML文档标签。 这是一些额外的努力,但开箱即用…
这里有些例子:
/// <summary> /// Implementation of <see cref="IFoo"/>. /// </summary> public class Foo : IFoo { /// <summary> /// See <see cref="IFoo"/>. /// </summary> public void Foo() { ... } /// <summary> /// See <see cref="IFoo.Bar"/> /// </summary> public void Bar() { ... } /// <summary> /// This implementation of <see cref="IFoo.Snafu"/> uses the a caching algorithm for performance optimization. /// </summary> public void Snafu() { ... } }
更新:
我现在更喜欢使用ReSharper现在支持的/// <inheritdoc/>
。