簡體   English   中英

客戶端添加行為

[英]Client-side added behavior

正在嘗試設計一種系統,在該系統中,一個類將在項目中定義,在另一個項目中引用,並在后者中具有新功能。 有這種模式嗎?

上下文:我有一個游戲,其中有一個共同項目中的物品。 服務器和客戶端都引用了同一項目,因此我可以在服務器和客戶端中都使用StaffItem項,這使得在兩者之間進行序列化和反序列化變得更加容易。 問題是,我無法在客戶端中重新定義StaffItem類,因為它將改變服務器對此類的看法。 我正在嘗試找到一種不錯的方法,例如,將渲染添加到類的客戶端視圖(添加了紋理等代碼)。

我快要放棄了,只是將渲染代碼放在普通項目中,然后將其存入服務器。 任何指針(呵呵)將不勝感激。

您可以引入用於串行化和反序列化的DTO類,而不是通過導線傳輸實際的對象。 這使雙方的實際實現脫鈎。

如果我正確理解您的問題,則可以考慮以下兩種選擇。 第一個是使用與裝飾器模式相似的smth:

class StaffItem : IStaffItem {
  public int MyProp {get;set;}
  public void MyAction() {}
}
class ClientStaffItem : IStaffItem {
  private StaffItem _staffItem;
  public ClientStaffItem(StaffItem staffItem) {
    _staffItem = staffItem;
  }
  public int MyProp {
        get { return _staffItem.MyProp;} 
        set {_staffItem.MyProp; = value;}
  }
  public void MyAction() {
    _staffItem.MyAction();
  }
  public void YouClientMethod() {}
}

另一個使用繼承,但是確定需要序列化的字段以及如何進行序列化,並使用屬性或自定義序列化設置僅標記所需的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM