如何使源代码成为XML文档的一部分而不是违反DRY?

The*_*rff 6 .net c# dry documentation-generation

我想将部分源代码添加到XML文档中.我可以将源代码复制并粘贴到一些<code>元素中,如下所示:

/// <summary>
/// Says hello world in a very basic way:
/// <code>
///   System.Console.WriteLine("Hello World!");
///   System.Console.WriteLine("Press any key to exit.");
///   System.Console.ReadKey();
/// </code>
/// </summary>
static void Main() 
{
    System.Console.WriteLine("Hello World!");
    System.Console.WriteLine("Press any key to exit.");
    System.Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)

保持这一点将是痛苦的.是否有其他可能性将源代码添加到C#中的XML文档中?

我正在使用Sandcastle处理XML文档,并希望从中提供技术帮助文件(*.chm).我想在该帮助文件中添加部件或完整的方法体.


编辑: 感谢slide_rule的评论.我添加了一个更现实,更简单的例子:

假设我有这样的方法:

public decimal CalculateFee(Bill bill)
{
    if (bill.TotalSum < 5000) return 500;
    else
    {
        if (bill.ContainsSpecialOffer) return bill.TotalSum * 0.01;
        else return bill.TotalSum * 0.02;
    }
}
Run Code Online (Sandbox Code Playgroud)

很高兴有可能将费用的计算方法添加到技术帮助文件中.

最明显的解决方案是将算法作为平淡无奇的文本写入评论中,如:"如果账单的总金额小于5000那么......".

另一种解决方案是将方法的主体复制并粘贴到注释字段中,并将其放入<code>元素中.即使没有太多关于C#的知识,也可以很容易地理解这个方法体 - 所以将它放入技术帮助文件中没有任何错误.

这两种解决方案都违反了DRY原则!我想将方法​​体或方法体的各个部分添加到帮助文件中,而不重复信息.

这可能在C#中吗?(我认为RDoc for Ruby能够做到这一点,但我需要在C#中使用一些解决方案)

Adr*_*nch 1

只是抛出一个想法...

自动执行一个过程,查找以某种方式分隔的代码块,然后将该代码插入到 XML 注释中。

/// <summary>
/// Says hello world in a very basic way:
/// <code>
///     Code block 1
/// </code>
/// </summary>
static void Main() 
{
    // Code block 1 start
    System.Console.WriteLine("Hello World!");
    System.Console.WriteLine("Press any key to exit.");
    System.Console.ReadKey();
    // Code block 1 end
}
Run Code Online (Sandbox Code Playgroud)

我知道这并不漂亮,但这是一个开始!;)