मैं एक मोबाइल एप्लिकेशन में एक JSON इंटरफेस के लिए सी # में एएसपी.NET वेब एपीआई प्रोजेक्ट पर काम कर रहा हूं। मेरा विचार सभी अनुरोधों के लिए इंटरफेस बनाना था और फिर वेब एपीआई कोड में इन इंटरफेस का उपयोग करना था।एएसपी.नेट वेब एपीआई एक्शन विधि पैरामीटर के लिए निर्भरता इंजेक्शन
public interface IApiObject {}
public interface IApiResponse<T> : IApiObject where T : IApiObject {}
public interface IApiRegistrationRequest : IApiObject {}
मेरे नियंत्रक इस तरह दिखता है:
public class MyApiController : ApiController
{
public IApiResponse<IApiObject> Register(IApiRegistrationRequest request) {
// do some stuff
}
}
मेरे जाल एपीआई परियोजना भी इन इंटरफेस के कार्यान्वयन में शामिल है
मैं कुछ इस तरह के साथ समाप्त हो गया।
मैं वेब एपीआई परियोजनाओं MVC परियोजनाओं जैसे बाध्यकारी है मॉडल का उपयोग मान लिया, इसलिए मैं सभी IApiObjects और कस्टम मॉडल बांधने की मशीन उनके कार्यान्वयन के लिए इंटरफेस को हल करने के लिए एक एकता कंटेनर का उपयोग कर के लिए एक बांधने की मशीन प्रदान करने के लिए एक inheritance aware ModelBinderProvider बनाया।
हालांकि, कुछ और जांच के बाद, मैं How Web API does parameter binding पर आया और पता चला कि वेब एपीआई जटिल प्रकारों के लिए मॉडल बाइंडर्स के बजाय फॉर्मेटर्स का उपयोग करता है। लिंक्ड ब्लॉग पोस्ट मेरे एक्शन पैरामीटर पर मॉडलबिन्डरएट्रिब्यूट का उपयोग करने की सिफारिश करता है, लेकिन वह विशेषता केवल पैरामीटर के रूप में एक प्रकार स्वीकार करती है। हालांकि, मेरा कस्टम मॉडल बाइंडर एक खाली कन्स्ट्रक्टर नहीं रखता है (इसे एकता कंटेनर की आवश्यकता होती है), इसलिए मुझे इसका एक उदाहरण पास करना होगा।
अन्य तरीकों से मैं फ़ॉर्मेटर्स के लिए निर्भरता इंजेक्शन का उपयोग कर सकता हूं। दुर्भाग्यवश, मैं उनसे अपरिचित हूं क्योंकि मैंने पहले कभी उनका उपयोग नहीं किया है।
जाने का सही तरीका कौन सा है? और मैं यह कैसे करूँ?
धन्यवाद, यह दिलचस्प लग रहा है, लेकिन मैं अभी तकनीक को आसानी से नहीं बदल सकता। – Chris