簡體   English   中英

應用了不同操作集的C#類

[英]C# Class having different set of operations applied to

我有一個有一些屬性的類,例如

public class Foo {
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
}

現在我想擁有Foo的副本,同時對某些屬性應用一些操作。

我可以這樣做一個新方法:

public static Foo ReplaceSomethingInFoo(Foo foo) {
    var newFoo = ...;
    newFoo.Prop1 = foo.Prop1.Replace(....);
    return newFoo;
}

如果我需要Foo的另一個視圖,我創建了另一種方法。

是否有更多可重復使用的方式?

我正在考慮為那些定義這些視圖的屬性提供屬性。 也許是這樣的:

public class Foo {
    [ViewMode(Mode="Name1", ViewClass=ViewClassWithOperations)
    public string Prop1 { get; set; }
}

ViewClassWithOperations是應用於屬性的操作。 使用Mode-Name,我可以決定我應該實例化哪個ViewClass並應用於Foo。

這甚至有意義嗎? 太復雜了嗎? 你有更好的想法嗎?

看一下C#記錄類型 (即將推出C#)。 它們包含一個With方法,其行為如下:

 public Foo With(string prop1 = this.Prop1, string prop2 = this.prop2) 
    => new Foo(prop1, prop2);

您現在可以在C#中實現它,然后調用它為要替換的屬性傳遞命名參數。

但是當你說“查看”時,你可能應該考慮為Foo實現一個單獨的ViewModel類,並且可能使用Automapper來映射屬性,因為遲早你需要一個像'name'這樣的視圖,它可能是用'名字'構造的+空格+姓氏'。 將域模型重用為視圖模型通常會導致問題。

暫無
暫無

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

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