私はC#のポリモーフィズム/継承の状況に頭を悩ませようとしています。
私が今持っているのはこれらのクラスです:
Lease (the base class containing the general data)
PrivateLease (inheriting from the Lease class)
BusinessLease (inheriting from the Lease class)
私が達成したいのはこれです:
Lease lease = new PrivateLease();
これは現時点では機能しますが、PrivateLease
これを行うとオブジェクトのプロパティにアクセスできません。Lease
少なくとも、最初にオブジェクトをオブジェクトにキャストせずにPrivateLease
。
オブジェクトを、またはオブジェクトの1つのすべてのデータを保持するLease
オブジェクトの一般的なオブジェクトにします。次に、データベースに挿入/更新/削除するときに、データを挿入するテーブルを最初に決定するのはどのタイプかを尋ねます。PrivateLease
BusinessLease
上記はこの問題を解決するための正しいアプローチではないという奇妙な感覚を持っています。誰かがこれについて何かヒントがありますか?:-)私はグーグルで検索し、プログラミングの本を読みました。誰もが基本クラスを持ち、それから他のクラスに継承するというこのアプローチを提案しています。
どんな助け/ヒントも大歓迎です!
前もって感謝します。
編集
最初から少し詳しく説明しておけばよかったのですが、ごめんなさい!
上記のクラスは、ASP.NETソリューションのUIからのデータを保持しているだけで、データアクセス層を介してデータベースに対してCRUD操作を実行します。したがって、基本的に、これらのクラスには、データを保持するための一連のプロパティのみが含まれています。すなわち:
public class Lease
{
public int Id { get; set; }
public bool IsActive { get; set; }
public string TypeOfRental { get; set; }
public string RentalPeriod { get; set; }
public DateTime TakeoverDate { get; set; }
}
public class PrivateLease : Lease
{
public string Floor { get; set; }
public string Side { get; set; }
public int FloorSize { get; set; }
public int NumberOfRooms { get; set; }
}
等..
実世界に存在するリース変数が異なるため、クラスとクラスは異なり ますPrivateLease
:-)BusinessLease
基本的には、2つの別々PrivateLease
のオブジェクトを使用することもできますBusinessLease
が、モデルはAddress
オブジェクトが1つ以上Lease
のを保持できることを示しているため、これはオプションではありません。
私には、ASP.NETフロントエンドとDALの両方で主要なキャスティング地獄を経験するように思えますか?:-/