2011-11-20 11 views
7

私は、日付のフィールドを含む多くのAzureクラスを持ち、追跡によって変更しました。その後、私のデータクラスについては継承されたクラスを単純化する有効な方法ですか?

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

の代わりに、彼らはTableServiceEntity Iから継承した次のようなフィールド:私はこのように、これらなどを含むようにクラスを作成検討していたので

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

私は繰り返しを避けたいです

public class MyClass : TableServiceEntityRowInfo 
{ 

} 

この情報は、フィールドに情報を追加するために有効かつ賢明な方法ですか。私がここに求めているのは、これを多くのクラスにやりたいから、正しいことをしたいからです。

+0

私は100ではありませんが、一般的には、クラスの親が「IS A」であれば継承しようとします。あなたのケースでは、彼らは "HAS A"のように聞こえます。この場合、関連するプロパティを別のクラスにグループ化し、その機能を必要とするクラス、つまりMyClassに、ModifiedBy、CreatedByプロパティを含むEntityRowInfoというプロパティがあります。 – dreza

答えて

8

はい、これは有効かつ賢明です。

アズール固有の問題がある場合は、私はそのことについて話すことはできません。

"IS A"対 "HAS A"についてのコメントは、ここでは無視しても安全だと思います。本当に、それはほとんど命名スタイルになります。基本クラスTableServiceEntityRowInfoの名前はTableServiceEntityで、の行情報を持つため、名前を付けました。代わりにAuditableTableServiceEntityを呼び出すと、監査のためのフィールドがあるのでこれはまったく同じですが、継承クラスのそれぞれが"IS A"AuditableTableServiceEntityであると主張することができます。

ベースクラスをabstractとしてマークすると、インスタンス化されてはならず、継承されるだけであることが明確になることがあります。

+0

私は非常に多くの名前と抽象に関するコメントが好きです。どうもありがとう。 –

+0

クラスが継承するTableServiceEntityがRowKey、PartitionKey、Timestampの各プロパティを持つ非常に基本的なクラスであるため、これはAzureで正常に動作します。 – knightpfhor

関連する問題