2008-12-30 18 views
5

क्या किसी को कोडडॉम के साथ बेस क्लास की जेनेरिक विधि कॉल करने का कोई तरीका पता है?कोडडॉम - एक सामान्य विधि को कॉल करें

मुझे मानक विधि को कॉल करने में कोई समस्या नहीं है, लेकिन मुझे जेनेरिक को कॉल करने का कोई समाधान नहीं मिल रहा है।

कोड मैं मानक आधार वर्ग विधि GetInstance कॉल करने के लिए उपयोग करें:

CodeAssignStatement assignStatement = new CodeAssignStatement(
    new CodeVariableReferenceExpression("instance"), 
    new CodeMethodInvokeExpression(
     new CodeThisReferenceExpression(), 
     "GetInstance", 
     new CodeExpression[] { new CodeVariableReferenceExpression("instance") } 
    )); 

उत्तर

11

आप MSDN में अपना जवाब here पा सकते हैं:

सी # उदाहरण (CodeDomGenericsDemo) करने के लिए नीचे स्क्रॉल।

एक सामान्य विधि उत्पन्न होता है:

public virtual void Print<S, T>() 
      where S : new() 
     { 
      Console.WriteLine(default(T)); 
      Console.WriteLine(default(S)); 
     } 

और बाद में उदाहरण में मार डाला:

dict.Print<decimal, int>(); 

कोड विधि करने के लिए कॉल उत्पन्न करने के लिए:

methodMain.Statements.Add(new CodeExpressionStatement(
       new CodeMethodInvokeExpression(
         new CodeMethodReferenceExpression(
         new CodeVariableReferenceExpression("dict"), 
          "Print", 
           new CodeTypeReference[] { 
            new CodeTypeReference("System.Decimal"), 
             new CodeTypeReference("System.Int32"),}), 
              new CodeExpression[0]))); 

(आप CodeVariableReferenceExpression के बजाय CodeThisReferenceExpression() या CodeBaseReferenceExpression() का उपयोग करेगा, n निश्चित रूप से यदि मानक बेस क्लास विधि को कॉल करके आपका यही मतलब है।

संबंधित मुद्दे