2014-09-03 75 views
3

我有PersonBaseClass和派生自它的EmployeeClass。 现在我想定义一个方法体作为BaseClass中的注释,当我使用Resharper的“实现成员”(或手动实现它们)时,它也将它放入方法体中。是否有可能从BaseClass继承抽象方法的正文中的注释?

东西(大致)这样的:

public abstract class PersonBaseClass : DependencyObject 
{ 
    //<methodComment> 
    // object connectionString; 
    // _configurations.TryGetValue("ConnectionString", out connectionString); 
    //</methodComment> 
    protected abstract void InstanceOnPersonChanged(object sender, EventArgs eventArgs); 
} 

这时候实施将看起来像:

public class EmployeeClass : PersonBaseClass 
{ 
    protected override void InstanceOnPersonChanged(object sender, EventArgs eventArgs) 
    { 
     // object connectionString; 
     // _configurations.TryGetValue("ConnectionString", out connectionString); 
    } 
} 

是已经可以以某种方式?无法通过GhostDoc获得此功能。

编辑:这将是有用的,因为我想有一个库中的BaseClass和它的实现通常看起来每次都是相同的。

+0

Ghost文档足以将基类成员的评论拉回到被覆盖的成员的*评论*。您似乎要求在该方法中嵌入注释。这个功能可能不太可能,因为你所要求的很奇怪。 – 2014-09-03 13:51:37

+0

@Sriram Sakthivel:我该怎么做? 我也编辑了我的问题上面的解释,我会用这个。 – mYnDstrEAm 2014-09-03 13:59:02

+0

如果“每次执行通常看起来都是一样的”,为什么不把它变成一个虚拟的方法,而只是改变它(即覆盖它),当它真的不同时呢? - 或者分割方法,以便只有真正*不同的部分采用抽象方法。 – Corak 2014-09-03 14:05:36

回答

4

不完全是你要求的,但你可以使用Ghostdoc将评论拉到继承的成员。请注意,它不会将注释添加到派生类方法的正文,但会将其添加到其注释部分。

假设你有一个这样的类,它有评论嘿,这是伟大的方法:)

public abstract class PersonBaseClass 
{ 
    /// <summary> 
    /// Hey, this is great method :) 
    /// </summary> 
    /// <param name="sender">The sender.</param> 
    /// <param name="eventArgs">The <see cref="EventArgs" /> instance containing the event data.</param> 
    protected abstract void InstanceOnPersonChanged(object sender, EventArgs eventArgs); 
} 

然后添加派生类和重写这样

public class EmployeeClass : PersonBaseClass 
{ 
    protected override void InstanceOnPersonChanged(object sender, EventArgs eventArgs) 
    { 
     throw new NotImplementedException(); 
    } 
} 

的成员,那么将光标放置在派生类成员的主体内,然后按ctrl + 移位 + d。它将从基类中提取评论。

在执行上述步骤后,您的派生类将看起来像这样。

public class EmployeeClass : PersonBaseClass 
{ 
    /// <summary> 
    /// Hey, this is great method :) 
    /// </summary> 
    /// <param name="sender">The sender.</param> 
    /// <param name="eventArgs">The <see cref="EventArgs" /> instance containing the event data.</param> 
    /// <exception cref="System.NotImplementedException"></exception> 
    protected override void InstanceOnPersonChanged(object sender, EventArgs eventArgs) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+1

谢谢!这正是我需要的。注释是否在方法内部并不重要。 – mYnDstrEAm 2014-09-03 14:21:34

+0

是否有可能以某种方式表明一种方法有这种附加评论或按ctrl + shift + d唯一的方法来找出? – mYnDstrEAm 2014-09-03 14:24:22

+0

@mYnDstrEAm AFAIK没有。寻找它,我不知道这样的事情。 – 2014-09-03 14:36:36