मैं एक सामान्य विधि हैकॉलिंग सामान्य विधि
Foo<T>
मैं एक प्रकार चर एक प्रकार की उम्मीद है bar
यह संभव Foo<bar>
दृश्य स्टूडियो की तरह कुछ प्राप्त करने के लिए है है या बार में नामस्थान।
दया,
दान
मैं एक सामान्य विधि हैकॉलिंग सामान्य विधि
Foo<T>
मैं एक प्रकार चर एक प्रकार की उम्मीद है bar
यह संभव Foo<bar>
दृश्य स्टूडियो की तरह कुछ प्राप्त करने के लिए है है या बार में नामस्थान।
दया,
दान
इस प्रकार कर सकते हैं देता है मान लेते हैं कि फू वर्ग टेस्ट में घोषित किया जाता है जैसे
public class Test
{
public void Foo<T>() { ... }
}
आप पहली बार करने की जरूरत हैका उपयोग कर bar
टाइप करने के लिए विधि को तुरंत चालू करें 210। और फिर प्रतिबिंब का उपयोग करके इसे आमंत्रित करें।
var mi = typeof(Test).GetMethod("Foo");
var fooRef = mi.MakeGenericMethod(bar);
fooRef.Invoke(new Test(), null);
धन्यवाद कृपया ... बस मुझे क्या चाहिए! –
आप द्वारा
typeof(Foo<>).MakeGenericType(bar);
अगर मैं आपके सवाल का सही ढंग से समझ, आप, संक्षेप में, निम्नलिखित प्रकार परिभाषित किया है:
public class Qaz
{
public void Foo<T>(T item)
{
Console.WriteLine(typeof(T).Name);
}
}
public class Bar { }
अब, यह देखते हुए कि आप एक चर bar
इस तरह के रूप में परिभाषित किया है:
var bar = typeof(Bar);
फिर आप Foo<T>
पर कॉल करने में सक्षम होना चाहते हैं, T
को अपने इंस्टेंस वैरिएबल bar
के साथ बदलना चाहते हैं।
// Get the generic method `Foo`
var fooMethod = typeof(Qaz).GetMethod("Foo");
// Make the non-generic method via the `MakeGenericMethod` reflection call.
// Yes - this is confusing Microsoft!!
var fooOfBarMethod = fooMethod.MakeGenericMethod(new[] { bar });
// Invoke the method just like a normal method.
fooOfBarMethod.Invoke(new Qaz(), new object[] { new Bar() });
आनंद लें:
यहाँ है कैसे!
+1 ... स्वीकार्य उत्तर से थोड़ा सा बाद में लेकिन आश्चर्यजनक रूप से रखा! –
@ 'डैनियल इलियट '- हाँ, मुझे पता है - 41 सेकंड बाद। मैं उम्मीद कर रहा था कि मेरा थोड़ा और विस्तृत उत्तर जीत जाएगा, लेकिन हां। ;-) – Enigmativity
मेरा कोड काम मिलता है, विस्तार से सबसे अच्छा जवाब .... धन्यवाद –
क्या आप कुछ कोड दिखा सकते हैं जहां आप इसका उपयोग करने का प्रयास कर रहे हैं? यह निश्चित रूप से संभव है, इसलिए यह एक वाक्यविन्यास त्रुटि की संभावना है। – RPM1984