سؤال

هل يعرف أحد طريقة لاستدعاء طريقة عامة للفئة الأساسية باستخدام CodeDom؟

ليس لدي مشكلة في استدعاء الطريقة القياسية، لكن لا يمكنني العثور على حل لاستدعاء الطريقة العامة.

الكود الذي أستخدمه لاستدعاء طريقة الفئة الأساسية القياسية GetInstance:

CodeAssignStatement assignStatement = new CodeAssignStatement(
     new CodeVariableReferenceExpression("instance"),
     new CodeMethodInvokeExpression(
         new CodeThisReferenceExpression(),
         "GetInstance",
         new CodeExpression[] { new CodeVariableReferenceExpression("instance") }
     ));
هل كانت مفيدة؟

المحلول

يمكنك العثور على إجابتك هنا في ام اس دي ان:

قم بالتمرير لأسفل إلى مثال C# (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])));

(يمكنك استخدام CodeThisReferenceExpression() أو CodeBaseReferenceExpression() بدلاً من CodeVariableReferenceExpression)، لست متأكدًا مما إذا كان هذا هو ما تعنيه باستدعاء أسلوب الفئة الأساسية القياسية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top