単独で使用したり、集合体に結合したりできるドメインエンティティのロードを実現するために必要なインターフェイスと抽象を設計しようとすると、完全に混乱しました。わお。それは一口の流行語でした。基本的に、基本タイプの「ロード」機能が必要な2つのオブジェクトがありますが、これら2つのオブジェクトを1つに組み合わせると、多重継承に遭遇します。
だから、私はこのような私のエンティティを持っています(私は描くでしょう
public class Account
public class Document
public class AccountDocument
{
public Account Account{get;set;}
public Document Document{get;set;}
}
次に、次のようなインターフェイスがあります。
public interface IAccountRepository
{
Account Load(IDataContext context);
}
public interface IDocumentRepository
{
Document Load(IDataContext context);
}
public interface IAccountDocumentRepository
{
AccountDocument Load(IDataContext context);
}
アカウントとドキュメントの両方が他のエンティティから派生する可能性がある(そして派生している)ので、DRYに従うように、実装に基本機能を提供したいと思います。
public abstract class AccountRepositoryBase : IAccountRepository
{
Account Load(IDataContext context)
{
//implementation for loading the Account from the context
}
}
public abstract class DocumentRepositoryBase : IDocumentRepository
{
Document Load(IDataContext context)
{
//implementation for loading the Document from the context
}
}
これは、個々のAccountオブジェクトとDocumentオブジェクト、およびそれらの派生に対しては正常に機能しますが、頭を悩ませることができない問題は、AccountDocumentの処理方法です...
public class AccountDocumentRepository : AccountRepositoryBase, DocumentRepositoryBase
{
//This is not possible, of course, due to multiple inheritance.
}
解決策はそれほど難しいものではないことはわかっていますが、私は完全に絡み合っており、基本の「ロード」機能を1回だけ提供する方法を明確にすることはできません。助けてください!
前もって感謝します。