ABP文件翻譯 值物件

2022-01-16 12:11:38 字數 1412 閱讀 5631

本人是abp初學者,在看英文文件和@tkb至簡 的abp框架理論研究總結(典藏版)

時,發現大神@

tkb至簡中少了對value objects的翻譯,看文件是新的,大神沒時間把,小弟給補充上。  

「用於描述領域的某個方面而本身沒有概念標識的物件稱為 a value object」(eric evans)

對於實體是相反的,實體有它們的表示(id),乙個值物件沒有標識。如果兩個實體的標識不相同,即使它們所有的其他實體屬性是一樣的,它們也被稱為不同的物件/實體。想象一下,兩個不同的人擁有相同的名字、姓氏和年齡,但是他們擁有不同的身份證號,他們就是不同的人。但是,對於乙個位址(它是乙個經典的值物件)類,如果兩個位址是相同的國家、城市、街道號碼...等等,也被稱為同樣的位址。

在領域驅動模型中(ddd),值物件是領域物件的另一種型別,它能包含業務邏輯,它是領域必不可少的一部分。

在abp中,可以很簡單的就建立值物件型別abp有乙個valueobject基類,繼承它就可以了。示例,位址 值物件 型別:

public

class address : valueobject //

引用城市實體.

public

string street

public

int number

public address(guid cityid, string street, int

number)

}

假設兩個值物件所有的屬性都是一致的,值物件基類的重寫equality操作(和其他相關操作和方法)來比較兩個值物件。 那麼,所有這些測試都通過:

var address1 = new address(new guid("

21c67a65-ed5a-4512-aa29-66308faab5af

"), "

baris manco street

", 42

);var address2 = new address(new guid("

21c67a65-ed5a-4512-aa29-66308faab5af

"), "

baris manco street

", 42

);assert.equal(address1, address2);

assert.equal(address1.gethashcode(), address2.gethashcode());

assert.true(address1 ==address2);

assert.false(address1 != address2);

即使它們在記憶體中,是不同的物件。在我們的領域中也是相同的。

在這裡有一些對於值物件最佳的實踐

ABP官方文件翻譯 3 2 值物件

值物件 介紹 展現領域描述性層面且沒有概念性身份的物件稱之為值物件。eric evans 和實體相反,實體有身份標示 id 值物件沒有身份標示。如果兩個實體的身份標示是不同的,那麼就認為他們是不同的物件 實體,即使他們的所有屬性都是一樣的。考慮兩個不同的人有相同的名字 姓氏和年齡,但是他們是不同的人...

ABP官方文件翻譯 3 5 規約

規約 建立規範類 使用倉儲規約 組合規約 討論介紹 規約模式是一種特別的軟體設計模式,通過使用布林邏輯將業務規則鏈結起來重新調配業務規則。維基百科 尤其是,它通常用來為實體或其他業務物件定義可復用的過濾器。示例 在這個部分,我們將看到規約模式的必要性。本部分是通用的,和abp的實現沒有必然的關係。假...

ABP官方文件翻譯 2 7 物件到物件的對映

物件到物件的對映 mapto擴充套件方法 單元測試 介紹 對映乙個相似的物件到另乙個物件是常有的事情。因為兩個物件 類 有相似 相同的屬性,所以兩個相似物件之間相互對映是乏味 重複的。考慮乙個經典的應用服務方法如下 public class public void createuser create...