0

再利用可能な一連の EF モデルとインターフェイスを構築しようとしています。そのようなインターフェースの 1 つは と呼ばれICategorised、次のようになります。

public interface ICategorised {
    int CategoryID { get; set; }
    Category Category { get; set; }
}

そして、Category オブジェクトは次のようになります。

public class Category {
    public int CategoryID { get; set; }
    public string Title { get; set; }
    public Type Type { get; set; } // Is 'Type' the wrong type for this?
    public string Description { get; set; }
}

私はこの原則が非常に気に入っていますが、実装するオブジェクトの Type を取得および設定する最善の方法に少し困惑していますICategorised。私の最終目標は、次のようなオブジェクトを作成できるようにすることです。

public class Car : ICategorised {
    public int CarID { get; set; }
    public string CarName { get; set; }
    public int CategoryID { get; set; }
    public Category Category { get; set; }
}

Categories..そして、どういうわけかどこに問い合わせることができますType==Car

4

1 に答える 1

1

ICategorized実存型としての現在の使用法を再考する必要があると思います。のすべての定義を提供しますが、現時点では実際には実装されていないCategoryため、実際にはこれが必要であるように思われます。あなたが維持したいのであれば、私はそれを最初のポイントとして実装させます。CategoryICategorizedICategorizedCategory

次に、Category abstract直接インスタンス化するべきではないため、作成します。次に、あなたCarとあなたが作成する他の分類されたクラスは、から直接派生しますabstract Category。これにより、ICategorized上記のように階層を変更した場合にも、本質的にそれらが作成されます。

それは私が思った後のあなたの姿を実現し、将来のタイプに拡張可能なよりクリーンな階層につながります。次に、特定の各サブクラスに。などの明示的なセットがあるため、Type直接クエリを実行できます。CategoryTypeCar

それが役立つことを願っています、または少なくとも正しい方向への一歩です。

于 2012-12-10T09:39:36.603 に答える