編集:答えが見つかりました(コメントで)。
現在、System.Web.Http.ApiController
サーバーのメモリ内のオブジェクトにアクセスするために使用しています。これらのオブジェクトは、任意のタイプを持つことができます。
次のAPIコントローラーを使用してそれらを受け取ります:(サンプルコード。完全なソースコードではありません)
public class DataController : ApiController
{
Dictionary<String, Object> _dataDict;
public object Get(string dataPath)
{
Object result = _dataDict[dataPath];
return result;
}
}
これは、Web API を介して JSON ですべてのオブジェクトを受け取るのに問題なく機能します。問題は、POST を使用して新しいオブジェクトを送信することです。
public class DataController : ApiController
{
Dictionary<String, Object> _dataDict;
public object Get(string dataPath)
{
Object result = _dataDict[dataPath];
return result;
}
public void Post(string dataPath, Object obj)
{
_dataDict[dataPath] = obj;
}
}
Object は、実際の逆シリアル化されたオブジェクトではなく、動的オブジェクトになります。次のような具体的なメソッドを実装します。
public object Post(string dataPath, MyClass instance)
{
_dataDict[dataPath] = instance;
}
正常に動作します。悲しいことに、私は実行時に使用されるすべての型を知っているわけではありませんが、dataPath を分析することでそれがどの型であるかを知っており、実行時に Type インスタンスを取得できます。正しい Type を使用して正しいインスタンスを作成するように、フォーマッタまたは ApiController (実際にインスタンスを作成したのは誰なのかわかりません) に指示するにはどうすればよいですか?
を使用してSystem.Net.Http.Formatting.JsonMediaTypeFormatter
います。
前もって感謝します。
デブラズ