Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于两种接口变体的C#代码文档_C#_Documentation_Dry_Fluent Interface - Fatal编程技术网

关于两种接口变体的C#代码文档

关于两种接口变体的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

我目前正在重写SDK以访问Web服务

由于数据库查询的模型由许多类组成(实际上,大约二十个可能的过滤器中的每一个都有一个类),因此我决定另外提供一个流畅的接口

所以不是

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>