我試圖綁定一個控制器動作到接口,但仍然保持默認的綁定行爲。web api模型綁定到接口
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。我希望能夠在服務中處理它。如果我將CoolClass指定爲動作參數,它可以正常工作。
編輯:所以我在這裏找到了我的問題的部分解決方案Dependency injection for ASP.NET Web API action method parameters,但有一個後續問題。該解決方案不能解析接口屬性。看我下面的例子。
IConcreteClass將被解析,但ISubtype不會。
public class SubConcreteClass : ISubtype
{
// properties
}
public class ConcreteClass : IConcreteClass
{
public ISubtype Subtype {get;set;}
}
一旦媒體格式化程序發現可以解析IConcreteClass中的類型,它就會讀取整個流。所以我猜測沒有機會解決接口成員。
對於另一替代方案中,檢查了我的回答一個類似的問題[_here_](HTTP:// stackoverflow.com/questions/14124189/can-i-pass-an-interface-based-object-to-an-mvc-4-webapi-post/22279204#22279204)。 –