কিভাবে একটি lambda মধ্যে পাস এবং একটি নির্দিষ্ট সেট পদ্ধতি অ্যাক্সেস আছে

আমি কিছু মত করতে চান:

 AStaticClass.MakeCall(commonCmds => commonCmds.MethodOfAParticularClass)

তাই আমি একটি আর্গুমেন্ট হিসাবে একটি ল্যাম্বda অভিব্যক্তি থাকতে চাই এবং একটি নির্দিষ্ট বর্গ যে আমি lambda ফাংশন সঙ্গে intellisense মাধ্যমে অ্যাক্সেস করতে পারেন উপলব্ধ সেট পদ্ধতিতে প্রতিনিধি তালিকা আছে। তারপর পদ্ধতিতে পাস একটি কল করা।

i.e. commonCmds => commonCmds. {Lists all the methods of a particular class}

এবং তারপর আমি একটি পদ্ধতি আছে যে যে কল তোলে চায়।

আমি সঠিক পদ্ধতি স্বাক্ষর এটি চিন্তা করতে পারে না।

এখন পর্যন্ত আমি সরকারী অকার্যকর MakeCall (অ্যাকশন সিএমডি) {cmd.invoke;} এই স্পষ্টতই কাজ করে না। আমি func চেষ্টা, এক্সপ্রেশন এবং এটি বুঝতে পারেন না।

তোমার সাহায্য র জন্য ধন্যবাদ!

সম্পাদনা করুন:

CmdsTwo এবং CmdsOne স্ট্যাটিক হতে পারে। যাইহোক আমি এইভাবে আমার ক্লাস আপ করতে চাই, এটি অনেক অন্যান্য আমার কাজ অনেক সহজ করতে হবে, কারণ।

public void Main(string []args) {
    MyStaticClass.MakeCall(x => x.DoThis);

    MyStaticClass.MakeCallTwo(x => x.DoThisTwo);

    MyStaticClass.MakeCall(x => x.DoThisThree);
}

public static class MyStaticClass{
    public static void MakeCall<???>( ??????)

    public static void MakeCallTwo<???>( ??????)
}

public class Cmds{
    public void DoThis();

    public void DoThisThree();
}

public class CmdsTwo{
    public void DoThisTwo();
}

}

0
'যে কোনও শ্রেণীতে যে অ্যাক্সেস করতে পারি' সেগুলির উপলব্ধ সেটগুলির প্রতিনিধি তালিকা আছে 'অর্থে কোনও অর্থে নয়। আপনি ইন্টেলিসেন্স সম্পর্কে কথা বলছেন?
যোগ লেখক leppie, উৎস
আমি নিশ্চিত নই যে আপনি কি জিজ্ঞাসা করছেন তা স্পষ্ট। আপনি কি বলছেন আপনি কি আপনার আইডিই জানতে চান যে আপনি আপনার MakeCall পদ্ধতিতে যাচ্ছেন, যাতে intellisense কাজ করে?
যোগ লেখক Dan Puzey, উৎস
উত্তরগুলি বেশ ভিন্ন, আপনি একটি নির্দিষ্ট শ্রেণীর সকল পদ্ধতি তালিকা দিয়ে কি বোঝাতে চেয়েছেন তা আরও স্পষ্ট করে তুলতে হবে।
যোগ লেখক Adriano Repetti, উৎস

4 উত্তর

তাই আমি এটি পেয়েছিলাম। একটি এক্সটেনশন পদ্ধতি ব্যবহার করে I ধন্যবাদ.

 public static class MyStaticClass{
     public static void MakeCall(Action paramater){
           Helper(new Cmds(), parameter);
      }

      private static void Helper(this Cmds, Action invokeThis) {...}

     public static void MakeCallTwo<???>( ??????)
 }
0
যোগ

আমি মনে করি সবচেয়ে নিকটতম এখন এই হয়:

commonCmds => commonCmds.GetType().GetMethods()

এটি আপনাকে MethodInfo , যা commonCmds ধরনের সব পদ্ধতি বর্ণনা করে। আপনি এই মত এক আহ্বান করতে হবে:

object result = someMethodInfo.Invoke(someObjectInstance, new object[] { someParameter });
0
যোগ

আপনি এটি চেক করতে পারেন

AStaticClass.MakeCall(() => commonCmds.MethodOfAParticularClass)
0
যোগ

আপনি একটি প্রকার সঙ্গে কর্মের জেনেরিক সংস্করণ ব্যবহার করতে হবে।

public void MakeCall(Action cmd) 
{
   cmd.Invoke(...);
}

টাইপ অবরোচিত এবং intellisense অভিভূত করা উচিত।

0
যোগ