关于两种接口变体的C#代码文档
我目前正在重写SDK以访问Web服务 由于数据库查询的模型由许多类组成(实际上,大约二十个可能的过滤器中的每一个都有一个类),因此我决定另外提供一个流畅的接口 所以不是关于两种接口变体的C#代码文档,c#,documentation,dry,fluent-interface,C#,Documentation,Dry,Fluent Interface,我目前正在重写SDK以访问Web服务 由于数据库查询的模型由许多类组成(实际上,大约二十个可能的过滤器中的每一个都有一个类),因此我决定另外提供一个流畅的接口 所以不是 new Query( Age = new AgeFilter() { From = 18, To = 65 }, Location = new PostalCodeFilter() { Zip = 12345, new RadiusDefinition() { ... } } ); 用户现在可以写入: Query.Crea
new Query(
Age = new AgeFilter() { From = 18, To = 65 },
Location = new PostalCodeFilter() { Zip = 12345, new RadiusDefinition() { ... } }
);
用户现在可以写入:
Query.Create()
.WithAge(18, 65)
.WithLocation(12345, 50, "miles");
现在我发现传统的方法也必须包括在内(我不能将实际对象隐藏为内部对象)
如何避免记录fluent接口的参数和数据类的字段?描述是一样的。我曾考虑过see/see,但这不会出现在VisualStudio的代码助手中。我认为您不能。xml文档注释应用于非常特定的事物,不容易“共享”。但是,您可以使用
标记在元素之间“链接”。看看它是否对你有用
理解DRY实际上主要适用于代码;将同一行代码编写两次意味着,如果必须对该代码中固有的逻辑进行更改,则必须进行两次。您试图避免重复的是标记,虽然标记可能有相同的固有问题,即必须在多个位置进行更改,但用于避免重复类似内容的工具通常较少。如果您查看其他有多种方法可以实现类似目标的库,您会发现许多文档都是复制粘贴的。如果您使用Sandcastle,您可以像这样使用标记:
///<param name="from">
///<inheritdoc cref="AgeFilter.From" select="/summary/node()" />
///</param>
///
///
///
或
///
///
///
感谢您的快速回复。我知道see标记,并将其包含在我的问题中,但没有显示它在HTML标记中。事实上,我不同意你的意见。您提到的干燥原因也适用于文档。我们的SDK有不同的语言版本。理想情况下,文档的更改不需要更改不同的语言。我不知道我们的文档过程是否允许我们使用SandCastle,但这绝对是我想要的。谢谢
///<summary>
///<inheritdoc cref="QueryFilters.WithAge" select="/param[@name='from']/node()"/>
///</summary>