2011-11-20 7 views
7

मेरे पास कई Azure कक्षाएं हैं जो फ़ील्ड वाले हैं और ट्रैकिंग द्वारा संशोधित हैं। जैसे फील्ड्स:क्या यह मेरी विरासत कक्षाओं को सरल बनाने का एक वैध तरीका है?

[DisplayName("Created By")] 
public string CreatedBy { get; set; } 
[DisplayName("Modified By")] 
public string ModifiedBy { get; set; } 

मैं पुनरावृत्ति से बचना चाहते हैं तो मैं एक वर्ग बनाने के लिए इस रूप में इन तरह के शामिल करने के लिए विचार कर रहा था: तो

public class TableServiceEntityRowInfo : TableServiceEntity 
{ 
    [DisplayName("Created By")] 
    public string CreatedBy { get; set; } 
    [DisplayName("Modified By")] 
    public string ModifiedBy { get; set; } 
} 

अपने डेटा कक्षाओं के लिए के बजाय उन्हें TableServiceEntity मैं से विरासत होने इन्हें निम्नानुसार सेट करना चाहते हैं:

public class MyClass : TableServiceEntityRowInfo 
{ 

} 

क्या यह फ़ील्ड में अतिरिक्त जानकारी जोड़ने का एक वैध और समझदार तरीका है। कारण मैं यहां पूछ रहा हूं क्योंकि मैं इसे कई कक्षाओं में करने की योजना बना रहा हूं और मैं यह सुनिश्चित करना चाहता हूं कि मैं सही काम करता हूं।

+0

मैं 100 नहीं हूं, लेकिन आम तौर पर मैं माता-पिता के वर्ग "आईएस ए" के उत्तराधिकारी होने का प्रयास करता हूं। आपके मामले में वे "एचएएस ए" की तरह अधिक ध्वनि करते हैं, इस मामले में मैं संबंधित गुणों को एक अलग वर्ग में समूहित कर सकता हूं और उन गुणों को उस वर्ग पर उजागर कर सकता हूं, जिन्हें इस कार्यक्षमता की आवश्यकता है यानी MyClass की एक संपत्ति है जिसे EntityRowInfo कहा जाता है जिसमें आपकी संशोधित है, निर्मित गुण – dreza

उत्तर

8

हां, यह मान्य और समझदार है।

यदि कोई एज़ूर-विशिष्ट चिंताएं हैं, तो मैं उससे बात नहीं कर सकता।

"आईएस ए" बनाम "एएएस ए" के बारे में टिप्पणी के लिए, मुझे लगता है कि इसे सुरक्षित रूप से यहां अनदेखा किया जा सकता है। वास्तव में, यह लगभग नामकरण शैली के लिए आता है। आपने अपना बेस क्लास TableServiceEntityRowInfo नाम दिया है क्योंकि यह TableServiceEntity है जो पंक्ति जानकारी है। क्या होगा यदि आपने इसे AuditableTableServiceEntity के बजाय बुलाया क्योंकि इसमें ऑडिटिंग के लिए फ़ील्ड हैं। अब यह वही है, लेकिन आप दावा कर सकते हैं कि प्रत्येक विरासत वर्ग "आईएस ए"AuditableTableServiceEntity है।

आप अपनी बेस क्लास को abstract के रूप में भी चिह्नित करना चाहते हैं ताकि यह स्पष्ट किया जा सके कि इसे तत्काल प्राप्त नहीं किया जाना चाहिए।

+0

मुझे नामकरण बहुत पसंद है और सार के बारे में टिप्पणी पसंद है। बहुत बहुत धन्यवाद। –

+0

यह Azure में TableServiceEntity के रूप में ठीक काम करेगा जो आपकी कक्षा से प्राप्त होता है, रोकी, पार्टिशनकी और टाइमस्टैम्प गुणों के साथ बस एक बहुत ही बुनियादी वर्ग है। – knightpfhor

संबंधित मुद्दे