पर बाध्यकारी त्रुटि मुझे प्रतिबिंब और जेनेरिक का उपयोग करके प्रतिनिधि का संग्रह बनाने में समस्याएं आ रही हैं।प्रतिनिधि। क्रिएटडिलेगेट() और जेनेरिक: लक्ष्य विधि
मैं सहयोगी विधियों से एक प्रतिनिधि संग्रह बनाने की कोशिश कर रहा हूं, जिसका साझा एक सामान्य विधि हस्ताक्षर है।
public class Classy
{
public string FirstMethod<T1, T2>(string id, Func<T1, int, IEnumerable<T2>> del);
public string SecondMethod<T1, T2>(string id, Func<T1, int, IEnumerable<T2>> del);
public string ThirdMethod<T1, T2>(string id, Func<T1, int, IEnumerable<T2>> del);
// And so on...
}
और जेनरिक खाना पकाने:
// This is the Classy's shared method signature
public delegate string classyDelegate<out T1, in T2>(string id, Func<T1, int, IEnumerable<T2>> filter);
// And the linq-way to get the collection of delegates from Classy
(
from method in typeof(Classy).GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.NonPublic)
let delegateType = typeof(classyDelegate<,>)
select Delegate.CreateDelegate(delegateType, method)
).ToList();
लेकिन Delegate.CreateDelegate(delegateType, method)
एक ArgumentException त्रुटि विधि को लक्षित करने के लिए बाध्य कह फेंकता है। :/
मैं क्या गलत कर रहा हूं?
हाय ड्राइविस! आपकी प्रतिक्रिया के लिए धन्यवाद। 'आप विधि हस्ताक्षर पर भिन्नता घोषित नहीं कर सकते' के साथ क्या मतलब है? – SDReyes
वह आपके सामान्य तर्कों पर 'आउट' और 'इन' कीवर्ड का अर्थ है। – gix
मेरा मतलब है कि कक्षा में आपके विधि हस्ताक्षर पर आपके पास और संशोधक नहीं हो सकते हैं। आप केवल उन्हें प्रतिनिधि और इंटरफ़ेस घोषणाओं पर ही प्राप्त कर सकते हैं। – driis