一个抽象方法的实现体是否能从基类中继承注释?

3
我有一个PersonBaseClass和EmployeeClass从它派生而来。 现在我想在BaseClass中定义一个方法体作为注释,当我使用Resharper的“实现成员”(或手动实现它们)时,它也会将其放入方法体中。
大致如下:
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放在一个库中,并且它的实现通常每次都是相同的,那么这将非常有用。

Ghost Doc足以提取基类成员的注释到重写成员的注释。您似乎要求将注释嵌入方法中。由于您的要求很奇怪,因此不太可能提供此功能。 - Sriram Sakthivel
@Sriram Sakthivel:我该怎么做呢?我还编辑了上面的问题,为了解释我会用它做什么。 - mYnDstrEAm
如果“它的实现通常每次看起来都是相同的”,为什么不将其作为虚方法,并且只有在真正不同的时候才更改它(即覆盖它)?或者将该方法拆分,以便只有真正不同的部分在抽象方法中。 - Corak
1个回答

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 + shift + 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
有没有办法指示一个方法是否有这种附加的注释,或者按下ctrl + shift + d是唯一的找到方法? - mYnDstrEAm
据我所知,目前还没有。你可以去寻找一下,我不知道有这样的东西。 - Sriram Sakthivel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接