コントローラー アクションをインターフェイスにバインドしようとしていますが、既定のバインド動作を維持しています。
public class CoolClass : ISomeInterface
{
public DoSomething {get;set;} // ISomeInterface
}
public class DosomethingController : ApiController
{
public HttpResponseMessage Post(ISomeInterface model)
{
// do something with model which should be an instance of CoolClass
}
}
私のサービスの消費者は CoolClass について何も知らないので、渡す Json に「$type」を追加させることは、私の考えではハックです。サービスで対応できるようにしたいです。アクション パラメーターとして CoolClass を指定すると、正常に動作します。
編集:だから私はここで私の質問に対する部分的な解決策を見つけましたASP.NET Web APIアクションメソッドパラメーターの依存性注入ですが、フォローアップの問題があります。そのソリューションは、インターフェイス プロパティを解決しません。以下の私の例を参照してください。
IConcreteClass は解決されますが、ISubtype は解決されません。
public class SubConcreteClass : ISubtype
{
// properties
}
public class ConcreteClass : IConcreteClass
{
public ISubtype Subtype {get;set;}
}
メディア フォーマッタは、IConcreteClass で型を解決できることを確認すると、ストリーム全体を読み取ります。したがって、インターフェイス メンバーを解決する機会はないと思います。