निम्न पदानुक्रम को देखते हुए:जेनेरिक आवरण वर्ग
class A
{
}
class B : A
{
public void Foo() { }
}
class C : A
{
public void Foo() { }
}
यह एक तीसरी पार्टी पुस्तकालय है और मैं इसे बदल नहीं सकते। क्या कोई तरीका है कि मैं किसी प्रकार का 'जेनेरिक टेम्पलेटेड रैपर' लिख सकता हूं जो फू() विधि को कन्स्ट्रक्टर तर्क के रूप में पारित अनुचित वस्तु को अग्रेषित करेगा? मैं निम्नलिखित, जो कोई जेनरिक का उपयोग करता है और नहीं बल्कि बदसूरत लगता लेखन समाप्त हो गया:
class Wrapper
{
A a;
public Wrapper(A a)
{
this.a = a;
}
public void Foo()
{
if (a is B) { (a as B).Foo(); }
if (a is C) { (a as C).Foo(); }
}
}
मैं Wrapper<T> where T : B or C
जैसे कुछ टेम्पलेट बाधा अच्छा लगेगा।
ही है मुझे लगता है मुख्य समस्या यह है कि 'फू है कि 'ए' में 'आभासी' नहीं है, है ना? – dasblinkenlight