评论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/>