आप व्युत्पन्न कक्षा में एक सामान्य विधि के प्रकार पैरामीटर को ओवरराइड नहीं कर सकते हैं। एक इसी तरह की सुविधा प्राप्त करने के लिए, एक ही विकल्प बिल्कुल के आधार पर अपने आधार वर्ग एक सामान्य वर्ग है, और अपने व्युत्पन्न वर्ग जैसे
class Derived : BaseClass<Customer>
{
protected override bool HasAnyStuff(Customer customer)
{
// ...
}
}
जहां BaseClass
रूप
class BaseClass<T> where T : class
{
// ...
protected virtual bool HasAnyStuff(T obj)
{
// ...
}
}
वैकल्पिक रूप से घोषित किया जाता है के लिए, है आपकी व्युत्पन्न कक्षा का उपयोग कैसे किया जा रहा है, आप गैर-जेनेरिक Customer
तर्क के साथ HasAnyStuff
विधि को ओवरराइड कर सकते हैं।
public bool HasAnyStuff(Customer customer)
{
// ...
}
हालांकि, ध्यान दें कि नई HasAnyStuff
अगर आप DerivedClass
का एक उदाहरण के साथ काम नहीं कर रहे हैं कहा जाता है नहीं किया जाएगा। यही कारण है, कहने के लिए
BaseClass foo = new DerivedClass();
foo.HasAnyStuff(new Customer());
BaseClass
की सामान्य विधि, नहीं DerivedClass
की गैर सामान्य विधि कॉल करेंगे।
स्रोत
2010-04-20 16:43:22