0

Events現在、、、コンテンツページなど、いくつかの基盤となるデータベーステーブルがありShop Products、それぞれに名前、サイトのフロントエンドの詳細ページ、サムネイルURL、アクティブフラグなどの共有プロパティがあります。

これらのオブジェクトを一般的に渡すために使用できる共有プロパティのクラスを作成する最も効率的な方法を見つけようとしています。例として、検索結果ページがあります。検索は、元々複数のテーブルにまたがっているデータのコレクションの名前に対して実行できます。

これらすべてのクラスがクラスから発生しているため、継承の使用に苦労してLINQいます。ニーズに合わせてデータコンテキストデザイナの編集を開始したくありません。

現在、私の各部分クラスにLINQ classesはSharedObjectメソッドが含まれています。

    public partial class Event
    {
        public SharedObject SharedObject
        {
           get
           {
            return new SharedObject(this);
           }
        }
     ...

これは、イベント、ショップ製品などに対して繰り返されます。共有オブジェクトクラスには、次のものが含まれます。

public class SharedObject
{
public string Reference { get; set; }
public string Name { get; set; }
public string ImageURL { get; set; }
public bool IsVisible { get; set; }
public bool IsAdminVisible { get; set; }
public string FrontEndDetailsURL { get; set; }
public string AdminDetailsURL { get; set; }
public object OriginalObject { get; set; }
public string ObjectDescription { get; set; }

public SharedObject(object originalObject)
{
    if (originalObject.GetType() == typeof(Event))
    {
        Event eventx = (Event)originalObject;

        Reference = eventx.Reference;
        Name = eventx.Name;
        ImageURL = eventx.ImageURL;
        IsVisible = eventx.IsActive && !Event.IsArchived;
        IsAdminVisible = !eventx.IsArchived;
        FrontEndDetailsURL = eventx.DetailsURL;
        AdminDetailsURL = eventx.AdminDetailsURL;
        OriginalObject = originalObject;
        ObjectDescription = "Event";
    }
    ....

これは適切な解決策のように聞こえますか?

4

2 に答える 2

0

共有オブジェクトを渡す最も効率的な方法は、「責任の連鎖パターン」を使用することだと思います。責任の連鎖

継承LINQの場合、IQueryable<T>の使用を考えます。お役に立てば幸いです

于 2012-08-09T08:51:36.513 に答える
0

インターフェイスの使用を検討してください。これははるかに柔軟です。

public interface ISharedObject
{
   string Reference { get; set; }
   string Name { get; set; }
   string ImageURL { get; set; }
   bool IsVisible { get; set; }
   bool IsAdminVisible { get; set; }
   string FrontEndDetailsURL { get; set; }
   string AdminDetailsURL { get; set; }
   object OriginalObject { get; set; }
   string ObjectDescription { get; set; }
}

public partial class Event : ISharedObject
{}
于 2012-08-09T08:52:09.190 に答える