Tôi đang cố gắng ràng buộc một hành động điều khiển với một giao diện nhưng vẫn duy trì hành vi ràng buộc mặc định.mô hình api web ràng buộc với một giao diện
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
}
}
Người tiêu dùng dịch vụ của tôi không biết gì về CoolClass để họ thêm "$ type" vào Json họ đang chuyển sẽ là ý kiến của tôi. Tôi muốn có thể xử lý nó trong dịch vụ. Nếu tôi chỉ định CoolClass làm tham số hành động thì nó hoạt động tốt.
EDIT: Vì vậy, tôi tìm thấy một giải pháp một phần cho câu hỏi của tôi ở đây Dependency injection for ASP.NET Web API action method parameters nhưng có một vấn đề tiếp theo. Giải pháp đó không giải quyết các thuộc tính giao diện. Xem ví dụ của tôi dưới đây.
IConcreteClass sẽ được giải quyết, nhưng ISubtype sẽ không.
public class SubConcreteClass : ISubtype
{
// properties
}
public class ConcreteClass : IConcreteClass
{
public ISubtype Subtype {get;set;}
}
Khi trình định dạng phương tiện truyền thông thấy rằng có thể giải quyết loại trong IConcreteClass, sau đó đọc toàn bộ luồng. Vì vậy, tôi đoán không có cơ hội để giải quyết các thành viên giao diện.
Đối với lựa chọn khác, hãy kiểm tra câu trả lời của tôi đến một câu hỏi tương tự [_here_] (http: // stackoverflow.com/questions/14124189/can-i-pass-an-interface-based-object-to-an-mvc-4-webapi-post/22279204#22279204). –