我正在尝试将控制器操作绑定到接口,但仍然保持默认绑定行为.
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
}
}
Run Code Online (Sandbox Code Playgroud)
我的服务的消费者对CoolClass一无所知,所以让他们为他们正在传递的Json添加"$ type"在我看来是个黑客.我希望能够在服务中处理它.如果我将CoolClass指定为动作参数,它可以正常工作.
编辑:所以我发现我的问题的部分解决方案在这里为ASP.NET Web API操作方法参数的依赖注入,但有一个后续问题.该解决方案无法解析接口属性.请参阅下面的示例.
IConcreteClass将被解析,但ISubtype不会.
public class SubConcreteClass : ISubtype
{
// properties
}
public class ConcreteClass : IConcreteClass
{
public ISubtype Subtype {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
一旦媒体格式化程序看到它可以解析IConcreteClass中的类型,它就会读取整个流.所以我猜我没有机会解决界面成员.