こんにちは、私はWEBAPI休憩サービスを開発しています。現在、私は別の辞書を返すエンドポイントに取り組んでいますASP.NET WebApi - 2つのJSON "return"タイプがありますか?
少しイントロJSONで(エンティティの配列は、Dictionary
データタイプと混同しないでください)フォーマット。辞書は名前で検索することができます:/dictionaries/:dictName
。問題は、アイテムが2種類のものとすることができる辞書に保管ということである:実体の
まずタイプ
class Item {
public long ID { get; set; }
public string Name { get; set; }
}
エンティティの第二のタイプ - 拡張項目
class ExtendedItem : Item {
public string AdditionalProperty { get; set; } // Let's name it this way just for example
}
問題は
私はそれを必要としない辞書のためにAdditionalProperty
を送ることを避けたいと思います。私は見つけることができたものの
public IHttpActionResult GetDict(string name)
{
try
{
object outDict = null;
switch(name) {
case "simpleDict":
IList<Item> simpleDict = _dataLayer.GetSimpleDict();
// ...
outDict = simpleDict;
break;
case "extDict":
IList<ExtendedItem> extDict = _dataLayer.GetExtDict();
// ...
outDict = extDict;
break;
// ... and a few more dictionaries
}
SomeLogger.SomeLogging(name, outDict);
return Ok(outDict);
}
catch (Exception ex)
{
// Just returning error
return BadRequest(ex.Message);
}
}
結論と質問
:私はシンプルApiControllerのメソッドを開発しました
現在のソリューション問題の解決策、私はそれに完全に満足していない。個人的には、object
データ型の使用を避けるための簡単な方法を探したいと思いますが、何もできませんでした。そして今質問が来る:
- このようなソリューションを実装するためのより良いプログラム的な方法は何でしょうか?私のためにが良いは、
object
タイプを使用しないで解決策を意味します。 IListにItemやExtendedItemを含めるように制限する簡単な方法はありますか? - 問題のアプローチを完全に変更する必要がありますか?
- または...このアプローチは正しいと思いますが、私は少し過敏ですか? ;-)
私は何か助けに感謝します。
はどうなりますか?派生型を直接割り当てることができるはずです。 – krillgar
それはそれほど簡単ではないと私は信じられない!魅力のように動作します。可能であれば、私はそれを受け入れることができるように回答を追加してください。そして、ありがとう;-) – PJDev