c# - Interface for method that returns its own type -


मेरे पास ऐसी स्थिति है जहां मेरे पास एक वर्ग है

  class Foo {Foo Bar () {नई फु (रिटर्न) (); }}  

अब मैं उसके लिए एक इंटरफ़ेस बना रहा हूँ

  class IFoo {??? बार (); }  

प्रश्न चिह्नों की जगह क्या होना चाहिए? प्रत्येक वर्ग को इसे अपनी तरह से वापस करना चाहिए, फ़ू नहीं।

नीचे दिए गए समाधान काम करते हैं लेकिन साफ ​​नहीं दिखते मुझे समझ में नहीं आ रहा है कि मुझे एक ही कक्षा को दो बार क्यों निर्दिष्ट करना है, और वर्तमान प्रकार के लिए "यह" जैसा कुछ भी नहीं है

ऐसा मैं बाद में इसका उपयोग कर रहा हूं

 < कोड> क्लास जेनेरिक क्लास & lt; T & gt; जहां टी: आईएफू {टी एफू = नया टी (); टी वस्तु = foo.Bar (); }  

आप पूछें:

नीचे दिए गए समाधान काम करते हैं लेकिन साफ ​​नहीं दिखता मुझे समझ में नहीं आ रहा है कि मुझे एक ही कक्षा को दो बार क्यों निर्दिष्ट करना है, और वर्तमान प्रकार के लिए "यह" जैसा कुछ भी नहीं है

इसका कारण आपको दो बार निर्दिष्ट करना है क्योंकि सी # आपको सुविधा की आवश्यकता नहीं है आप क्या चाहते हैं, ऐसा कुछ है:

  इंटरफ़ेस IFoo {IFoo बार (); } वर्ग फू: IFoo {Foo Bar () // से काम करना चाहिए क्योंकि फू एक IFoo है, लेकिन इसे C # {new Foo return () द्वारा समर्थित नहीं है; }}  

एक प्रकार-सुरक्षा दृष्टिकोण से, यह काम करना चाहिए (इसे कहा जाता है)। वास्तव में, अन्य प्रोग्रामिंग भाषाओं जैसे सी ++ या जावा इसका समर्थन करते हैं, देखें। दुर्भाग्य से, वापसी प्रकार सहकारिता को सी # (सी # 4.0 भी नहीं, जो जेनेरिक के लिए सहकारिता शुरू की है) द्वारा समर्थित नहीं है, यही वजह है कि आपको अन्य जवाबों में सचित्र "जेनेरिक वर्राउंड" का उपयोग करना है।


  • Comments

    Popular posts from this blog

    windows - Heroku throws SQLITE3 Read only exception -

    lex - Building a lexical Analyzer in Java -

    python - rename keys in a dictionary -