मेरा प्रश्न शायद अच्छी तरह से phrased नहीं है (कैसे उच्च स्तर की कक्षाओं उच्च स्तर डेटा के साथ आधार वर्ग विधि कॉल कर सकते हैं) और यह शायद एक शिकार है, लेकिन यहाँ मैं जानासी # हम स्थिर संपत्ति को ओवरराइड क्यों नहीं कर सकते?
class person {
protected static string request = "select * from person where gender in ('male','female')";
public string sharedmethod()
{
return "the request is" + request;
}
}
class man:person
{
override protected static string request = "select person.*,man.* from person,men where mytype in ('male') ";
DateTime dateOfFirstCar;
}
class woman:person
{
override protected static string request = "select person.*,woman.* from person,women where mytype in ('female') ";
DateTime dateOfFirstITBAG;
}
class Program
{
static void Main(string[] args)
{
if (new person().sharedmethod() == new man().sharedmethod())
Console.Write("too bad query is the same in base and dervide class");
}
}
एक आदमी एक व्यक्ति
एक औरत है एक व्यक्ति
व्यक्ति, पुरुष, महिला मेरे डेटाबेस में मौजूद है लेकिन विभिन्न प्रश्नों की आवश्यकता है
मैं उन प्रश्नों को डुप्लिकेट नहीं करना चाहता, इसलिए मैंने सोचा कि उन्हें प्रत्येक वर्ग में एक स्थिर संपत्ति में स्टोर करना एक अच्छा विचार था।
मैं कुछ निम्न स्तर सामान (वहाँ लगा नहीं) है कि आधार वर्ग में झूठ (coz मैं नकल नहीं करना चाहती) हो गया और मैं विरासत में मिला herited वर्गों के संदर्भ के साथ आधार वर्ग विधि कॉल करने कक्षाएं चाहते थे
मैं आदमी चाहता हूँ। [विरासत में मिला] somemethod() person.somemethod (निष्पादित करने के लिए), लेकिन चर आदमी से आने के साथ
धन्यवाद
धन्यवाद लेकिन व्यक्ति के लिए पूछताछ के बारे में क्या? – frenchone
@ फ्रैंचोन मैंने उस हिस्से को याद किया। आपको 'abstract' के बजाय संपत्ति 'वर्चुअल' बनाने की आवश्यकता है,' व्यक्ति 'वर्ग में कार्यान्वयन जोड़ें, और व्युत्पन्न कार्यान्वयन में' ओवरराइड 'जोड़ें। – dasblinkenlight
ठीक है मैं कोशिश करूँगा – frenchone