मैं MediaTypeFormatter
का एक कस्टम कार्यान्वयन करने की कोशिश कर रहा हूं, लेकिन विधि bool CanReadType(Type type)
को हमेशा IKeyValueModel
प्रकार के साथ बुलाया जाता है, इसके बजाय मेरे प्रकार MyProduct
।कस्टम मीडिया टाइप टाइपरेटर, क्यों IKeyValueModel और मेरे मॉडल प्रकार नहीं?
मेरी एपीआई नियंत्रक में मेरे पास है:
[HttpPost]
public Task Save(MyProduct product)
मैं कुछ उदाहरण (example 1, example 2) को देखा है, और मैं भी कोड की कोशिश की है:
protected override bool CanReadType(Type type)
{
if (type == typeof(IKeyValueModel))
return false;
return true;
}
लेकिन तब मैं एक " MissingMethodException: इस ऑब्जेक्ट के लिए कोई पैरामीटर रहित कन्स्ट्रक्टर परिभाषित नहीं किया गया है ", क्योंकि मेरे मॉडल प्रकार में पैरामीटर रहित कन्स्ट्रक्टर नहीं है। तो ऐसा लगता है क्योंकि CanReadType
IKeyValueModel
पर झूठा लौटाता है, ढांचा एक और मीडिया प्रकार फॉर्मेटर का उपयोग करता है। दरअसल, विधि OnReadFromStreamAsync
कभी हिट नहीं होती है।
मैं अपने मॉडल को deserialized कैसे नियंत्रित करने में सक्षम होना चाहता हूं, मैं असली प्रकार प्राप्त करना चाहता हूं और IKeyValueModel
नहीं।
यह पहले से ही मॉडल बाइंडर्स के साथ एमवीसी में बहुत अच्छा काम कर रहा था।
चीयर्स।
अद्यतन 2012/05/29:
अगर मैं डिफ़ॉल्ट json फ़ॉर्मेटर को दूर यह काम करता है:
public static void RegisterApis(HttpConfiguration config)
{
config.Formatters.Clear();
लेकिन तब मैं दोनों को रखने के लिए पसंद करेंगे, मैं कैसे यह संकेत दे सकती है जो एक मैं उपयोग करना चाहते हैं?
सम्मान।
आपको कस्टम 'MediaTypeFormatter' की आवश्यकता क्यों है? – Aliostad
नवीनतम कोड (रात का निर्माण) आज़माएं, वर्तमान स्रोत में कोई IKeyValueModel नहीं है। इसे टीम द्वारा हटा दिया/हटा दिया गया है। http://aspnetwebstack.codeplex.com/SourceControl/network/forks/BradWilson/AspNetWebStack/changeset/changes/5648aed69341 – user960567
@Aliostad मुझे एक कस्टम मीडियाटाइपफॉर्मेटर की आवश्यकता है ताकि यह नियंत्रित किया जा सके कि मेरी ऑब्जेक्ट्स जेएसओएन को क्रमबद्ध और deserialized कैसे हैं। – vtortola