2017-09-27 16 views
0

我想在兩個屏幕之間共享一些共同的邏輯,所以我想要一個從PXGraph繼承的抽象類,然後是從這個抽象類繼承的兩個不同的Graph。多次從PXGraph導出

像這樣:

namespace LE 
{ 
    public abstract class ICarrySomeLogic : PXGraph<ICarrySomeLogic> 
    { 
     // common business logic 
    } 

    public class graph1 : ICarrySomeLogic 
    { 
     // specific business logic 
    } 

    public class graph2 : ICarrySomeLogic 
    { 
     // specific business logic 
    } 
} 

是否正常工作?有沒有「最佳實踐」或其他適當的方法來做到這一點?

非常感謝,

回答

0

我以前做過這件事,工作很好。這裏是我的例子簡化...

public abstract class MyGraphBase<TGraph, TPrimary, TWhere> : PXGraph<TGraph, TPrimary> 
    where TGraph : PXGraph 
    where TPrimary : class, IBqlTable, new() 
    where TWhere : class, IBqlWhere, new() 
{ 
    public PXSelect<TPrimary, TWhere> document; 
} 

public class GraphOneEntry : MyGraphBase<GraphOneEntry, MyDac, Where<MyDac.docType, Equal<DocType.typeOne>>> 
{ 
} 

public class GraphTwoEntry : MyGraphBase<GraphTwoEntry, MyDac, Where<MyDac.docType, Equal<DocType.typeTwo>>> 
{ 
} 

我的基地抽象類中的事件將觸發,我可以根據需要重寫其他圖。

我一直用這個,因爲5.3版

+0

非常感謝,有沒有解決方案,使這個更清潔一點:我的TWhere很長?公共類ProcessLettrage:ProcessLettering ,等於, 和<電流, 。 >>>>> – Maxime

+0

您的主視圖(示例中的文檔)對於這兩個圖都是一樣的嗎? – Brendan

+0

TPrimary不一樣,一個是ARRegister,另一個是APRegister,但後面的邏輯將是相同的 – Maxime

0

你給了應該做你需要的例子。您的抽象類的可繼承特徵和行爲將按照預期由您的子類繼承。這也適用於擴展類。如果您擴展現有的圖形,則可以繼承您的擴展類以實現繼承。

注意:類型命名的「I」前綴是C#中接口的標準,而不是類。儘管抽象類與接口有一些相似之處,但它們並不相同。如果您想遵循Microsoft的最佳做法,您可能會考慮不使用此前綴進行類命名。如果你的I前綴只是單詞「I」(如你自己),那麼你可以忽略這個註釋。 :)