दिलचस्प पोस्ट
JAXB द्वारा उत्पन्न नहीं @ XmlRootElement कमांड प्रॉम्प्ट में जार फ़ाइल चलाएं मृत कोड खोजने के लिए आप उपकरण और तकनीकों का उपयोग क्यों करते हैं? Xcode 4.2 एक प्रोजेक्ट को दूसरे में कैसे शामिल किया जाता है? रॉ पोस्ट PHP में curl का उपयोग कर क्या एक jqGrid कॉलम चुनने के लिए एक पूर्ण काम उदाहरण है? सी # स्वत: पूर्ण एकीकरण और इकाई परीक्षणों के बीच अंतर क्या है? स्प्रिंग आईओसी और जेनेरिक इंटरफ़ेस टाइप SQL क्वेरी को चलाने के लिए Excel VBA का उपयोग करना मेवेन में उत्पन्न जार से संसाधनों को कैसे बाहर निकालना है? * नििक्स का चयन करें और exceptfds / errorfds अर्थशास्त्र वेब अनुप्रयोग सर्वर के बिना जावा वेब सेवा cmake add_custom_command कैसे एंड्रॉइड में एक उलटी गिनती टाइमर बनाने के लिए?

आंशिक प्रकार अनुमान

मेरे पास इस तरह की सामान्य विधि (सरलीकृत संस्करण) है:

public static TResult PartialInference<T, TResult>(Func<T, TResult> action, object param) { return action((T)param); } 

उपरोक्त में, param उद्देश्य के प्रकार प्रकार की object है। यह आवश्यकता का हिस्सा है

जब मैं प्रकार को भरता हूं, तो मैं इसे इस तरह कह सकता हूं:

 var test1 = PartialInference<string, bool>( p => p.EndsWith("!"), "Hello world!" ); 

हालांकि, मैं टाइप अनुमान का उपयोग करना चाहता हूं। अधिमानतः, मैं इसे लिखना चाहूंगा:

 var test2 = PartialInference<string>( p => p.EndsWith("!"), "Hello world!" ); 

लेकिन यह संकलन नहीं करता है। सबसे अच्छा मैं के साथ आया यह है:

 var test3 = PartialInference( (string p) => p.EndsWith("!"), "Hello world!" ); 

कारण मैं इसे एक प्रकार पैरामीटर के रूप में रखना चाहूंगा और अभी भी सही प्रकार से टाइप किए गए रिटर्न प्रकार हैं क्योंकि मेरी वास्तविक कॉल कुछ इस तरह दिखती है:

 var list1 = ComponentProvider.Perform( (ITruckSchedule_StaffRepository p) => p.GetAllForTruckSchedule(this) ) 

जो बहुत बदसूरत है और मुझे इस तरह से कुछ लिखना अच्छा लगेगा:

 var list2 = ComponentProvider.Perform<ITruckSchedule_StaffRepository>( p => p.GetAllForTruckSchedule(this) ) 

Solutions Collecting From Web of "आंशिक प्रकार अनुमान"

आप एक सामान्य प्रकार पर एक सामान्य विधि में टी को विभाजित कर सकते हैं:

 class Foo<TOuter> { public static void Bar<TInner>(TInner arg) {...} } ... int x = 1; Foo<string>.Bar(x); 

यहाँ int अनुमानित है, लेकिन स्ट्रिंग स्पष्ट है।

आप जो हासिल करने की कोशिश कर रहे हैं वह संभव नहीं है। यदि आपको अनुमान संभव है तो आपको सामान्य तर्कों या उन दोनों में से कोई भी निर्दिष्ट करने की आवश्यकता है।