2011-11-20 11 views
7

Mam wiele klas Azure zawierających pola daty i modyfikowane przez śledzenie. Obszary takie jak:Czy jest to ważny sposób na uproszczenie moich dziedziczonych klas?

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

chcę uniknąć powtórki więc rozważa utworzenie klasy zawierają one takie jak to:

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

Na moich zajęciach danych wtedy zamiast je dziedziczyć TableServiceEntity I chcesz ustawić je w następujący sposób:

public class MyClass : TableServiceEntityRowInfo 
{ 

} 

Czy jest to ważny i rozsądny sposób dodawania dodatkowych informacji do pól. Powodem, o który tutaj pytam jest to, że planuję to zrobić na wielu zajęciach i chcę upewnić się, że robię to, co trzeba.

+0

Nie jestem 100, ale generalnie staram się dziedziczyć, jeśli klasy "IS A" rodzica. W twoim przypadku brzmią one bardziej jak "HAS A", w którym to przypadku mogę pogrupować powiązane właściwości w oddzielną klasę i odsłonić tę właściwość na klasach, które potrzebują tej funkcji, tj. MyClass ma właściwość o nazwie EntityRowInfo zawierającą twoje właściwości ModifiedBy, CreatedBy – dreza

Odpowiedz

8

Tak, jest to ważne i rozsądne.

Jeśli są jakieś wątpliwości dotyczące Azure, nie mogę z tym porozmawiać.

Co do komentarza dotyczącego "IS A" kontra "HAS A", myślę, że można go tutaj bezpiecznie zignorować. Naprawdę, prawie sprowadza się do stylu nazewnictwa. Nazwałeś swoją klasę podstawową TableServiceEntityRowInfo, ponieważ jest to informacja o wierszu . Co jeśli zadzwonisz pod numer AuditableTableServiceEntity, ponieważ ma pola do audytu. Teraz jest dokładnie tak samo, ale możesz twierdzić, że każda z dziedziczących klas jest jedną z następujących: "IS A" "IS A" "IS A".

Możesz również chcieć oznaczyć swoją klasę podstawową jako abstract, aby było jasne, że nie powinno być tworzone, a jedynie dziedziczone.

+0

Bardzo lubię nazywać i komentować streszczenie. Wielkie dzięki. –

+0

To zadziała dobrze na Azure, ponieważ obiekt TableServiceEntity, z którego dziedziczy twoja klasa, jest po prostu bardzo podstawową klasą z właściwością RowKey, PartitionKey i datownika. – knightpfhor

Powiązane problemy