0
我試圖使用存儲庫模式在現有DB2模式上編寫數據訪問層。該模式具有幾個聚合,所有聚合都具有「文檔」的通用基本實體。在構建業務對象時,我將Document實體創建爲摘要,將聚合作爲從Document派生的實體。例如:爲使用存儲庫模式從相同基礎對象派生的聚合提供通用功能
public abstract class Document
{
public long Id{ get; set; }
public int PageCount{ get; set; }
public string Path{ get; set; }
}
public class LegalDocument : Document
{
public int CaseNumber{ get; set; }
}
public class BillingDocument : Document
{
public int InvoiceNumber{ get; set; }
public double AmountDue{ get; set; }
}
現在,我想創建一個BillingDocument庫,但我知道,我不希望加載的所有在我BillingDocument資源庫中文檔基本屬性的,所以我創造了另一個具有此功能的泛型類型參數的抽象類。但是,我正在讓編碼員的代碼塊弄清楚如何返回抽象文檔實體的實例,這個實例將被我將爲派生聚合實體編碼的存儲庫使用。我可以用反射來做到這一點,如下所示,但感覺都是錯誤的。
abstract class DocumentRepositoryBase<TDocument>
{
internal Document LoadDocumentBaseProperties(long documentId)
{
//Call the database and get the base properties and add them to....this?
var documentBase =
(Document)typeof(TDocument).GetConstructor(Type.EmptyTypes).Invoke(null);
//Set the documentBase properties
return documentBase;
}
}
我都扭了起來。有人可以向我保證,這是好的,或告訴我,我是一個白癡,並告訴我一個更好的方法?
在此先感謝。
就是這樣。上帝,謝謝,我無法想象爲了我的生活。 –