異なるタイプのオブジェクトのコレクションを返すことになっている WebApi コントローラーをセットアップしました。私のダミーコードを簡単に見てください:
interface IDish
{
int ID { get; set; }
string Name { get; set; }
}
class Steak : IDish
{
public int ID { get; set; }
public string Name { get; set; }
public string CookingStyle { get; set; }
public int Weight { get; set; }
}
class Soup : IDish
{
public int ID { get; set; }
public string Name { get; set; }
}
class Dessert : IDish
{
public int ID { get; set; }
public string Name { get; set; }
public bool ContainsSugar { get; set; }
}
public class DishController : ApiController
{
public IEnumerable<IDish> Get()
{
var dishes = busisnessLogic.GetDishes();
return dishes;
}
}
ご覧のとおり、コントローラーでは、ビジネス ロジックから IDish のコレクションを取得しています。具体的なクラスにはあまり注意を払わないでください。これらは、ここでの説明を簡単にするための単なるサンプルです。実際のビジネスの背景はまったく異なります。
それで、私の問題は何ですか?API コントローラーが IDishes (私の場合は Json) を返すと、IDish インターフェイスのパブリック プロパティのみが Json 出力に書き込まれます。
代わりに、具象クラスのすべてのパブリック プロパティを Json 出力に書き込みたいと考えています。たとえば、IDish が「ステーキ」の場合、ID、Name、CookingStyle、Weight を書き出す必要があります。したがって、「スープ」の場合は ID と名前、「デザート」の場合は ID、名前、ContainsSugar のみです。
これを達成する簡単な方法はありますか?時々、森の前の木を見ない傾向があります...;-)
みんなありがとう!