• 1400/01/21

پیاده سازی متد یک واسط بصورت استاتیک :

سلام و عرض ادب 

چطور میتونم یک متد که درون یک واسط تعریف شده رو در یک کلاس ، بصورت استاتیک پیاده سازی کنم.

راهی که امتحان کردم و جواب داد این بود که متد رو در واسط بصورت virtual تعریف کردم تا اجازه بده در واسط اون رو پیاده سازی کنم و  بعد از کلاس پیروی کننده از واسط متد مورد نظر رو استاتیک کردم ولی نمیودونم راه اصولیش این هست یا نه.

    interface ITest
   {
       virtual void MyMethod()
       {
           Console.WriteLine("Default");
       }
   }
    class MyClass0 : ITest
    {
        public static void MyMethod()
        {
            Console.WriteLine("vip");
        }
    }

 

  • 1400/01/21
  • ساعت 14:30

سلام. راه اصولیش فکر نکنم این باشه


  • 1400/01/21
  • ساعت 14:33

خودمم همین فکر رو میکنم

پیشنهادی داری ؟

تو نسخه جدید سی شارپ اجازه میده تو واسط از static برای متد ها استفاده کرد ولی در متد کلاس پیرو خطا نمیده که باید متد رو پیاده سازی کنی و در نهایت متد از طریق نام کلاس هم در دسترسی نیست 


  • 1400/01/21
  • ساعت 14:43

یه روش دیگه به ذهنم میرسه استفاده از متد واسط هست.تو نت هم همچین چیزایی دیدم بازم مطمین نیستم روش اصولی باشه.این روش منطقی تر به نظر میرسه

کد واسط

    interface ITalk
    {
        static void SayHello()
        {
            Console.WriteLine("Hello From Static Method In Interface");
        }
    }

کد کلاس

    class Talk : ITalk
    {
        public static void SayHello()
        {
            ITalk.SayHello();
        }
    }

متد فراخوانی کننده

            Talk.SayHello();

  • 1400/01/21
  • ساعت 22:56

در واقع من همونجوری ک استاد تو دوره گفتن پیاده سازی میکنم


logo-samandehi