我完全困惑自己试图设计必要的接口和抽象来完成可以自己使用以及组合成聚合的域实体的加载。哇。那是一个满口的流行语。本质上,我有两个对象,我希望它们具有基本类型的“加载”功能,但是当这两个对象合并为一个时,我会遇到多重继承。
所以,我有我的实体,就像这样(我会画
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);
}
由于 Account 和 Document 都可以(并且正在)从其他实体派生,我想在实现中提供基本功能,以便我遵循 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.
}
我知道解决方案不会那么难,但我完全纠结,无法理清如何只提供一次基本的“加载”功能。请帮忙!
提前致谢。