OP のコメントでKiran Challaが述べたように、サンプルの自動生成は Help Pages パッケージの一部であり、ApiExplorer インターフェイスではありません。
質問 1 については、複合オブジェクトが使用されている場所での例を定義しようとしています。これは、ヘルプ ページ構成の SetSampleObjects メソッドを介して行います。たとえば、これは私の HelpPageConfig.Register メソッドからのものです。
config.SetSampleObjects(new Dictionary<Type, object>
{
{typeof(CompositeType1), ModelExamples.GenerateExample<CompositeType1>()},
{typeof(CompositeType2), ModelExamples.GenerateExample<CompositeType2>()},
{typeof(CompositeType3), ModelExamples.GenerateExample<CompositeType3>()},
});
ここで、ModelExamples.GenerateExample は、指定された型のサンプル オブジェクトを作成するために使用する静的メソッド/クラスであり、このセクションをクリーンで簡潔に保ちます。上記により、ヘルプ ページのドキュメントでは、CompositeType1、CompositeType2、および CompositeType3 の戻り値の型に対して生成された例が使用されます。
これにより、質問 2 が発生します。次のような複数の複合型で構成される戻り値の型について話していると思います。
List<CompositeType1>
また
Tuple<CompositeType1,CompositeType2>
ヘルプ ページ ロジックは、モデルを使用するか一般的な例を生成するかを決定する前に、戻り値の型全体をチェックするだけなので、上記のようにモデルを生成するだけでは十分ではありません。したがって、次のようなエントリを追加する必要があります。
config.SetSampleObjects(new Dictionary<Type, object>
{
{
typeof(List<CompositeType1>),
ModelExamples.GenerateExample<List<CompositeType1>>()
},
{
typeof(Tuple<CompositeType1,CompositeType2>),
ModelExamples.GenerateExample<Tuple<CompositeType1,CompositeType2>>()
},
});
ここで、戻り値の型のいずれかに HttpResponseMessage を使用している場合は、次のように config.SetActualResponseType() を使用します。
config.SetActualResponseType(
typeof(List<CompositeType1>),
"Foo",
"ApiMethodA");
config.SetActualResponseType(
typeof(Tuple<CompositeType1,CompositeType2>),
"Bar",
"ApiMethodB");
TL;DR / 結論: config.SetSampleObjects と config.SetActualResponseType を組み合わせると、ヘルプ ページの自動生成ドキュメントで一般的にどのようなサンプル オブジェクトが表示されるかをカスタマイズし、各メソッドの応答がどのサンプル オブジェクトを指定するかを指定できます。使用する。
2016 編集コメントへの返信。ModelExamples は、指定された型のサンプル オブジェクトを作成しているだけです。これには多くの方法がありますが、ここでは 1 つの方法を示します。
public static class ModelExamples
{
public static T GenerateExample<T>()
{
var retval = default(T);
if (typeof(T) == typeof(ActionResult))
{
var value = ActionResult.Success;
retval = (T)(object)value;
}
// ... whatever other types you handle go here ...
return retval;
}
}