聽起來好像視圖模型持有域信息,它不應該這樣做。具體來說,它代表了屬於Core的數據結構,因爲Core具有需要它的功能。這個
兩種主要方法有:
- 創建一個核心模型和視圖模型可以有一個模型的屬性。
- 在Core中創建模型,視圖模型可以複製其結構。 (這可能涉及兩者之間的轉換方法。)
無論哪種情況,如果您有一個屬於核心的模型,那麼在那裏構建它。
這是什麼模式?根據描述我確實無法確定。現在我打算稱它爲EmailTemplate
。在這種情況下,它聽起來就像你有這樣的:
Core Assembly
Email Object
Send Method (View Model parameter)
Web Assembly
View Model Object
properties
相反,你會想這樣的:
Core Assembly
Email Object
Send Method (Email Template parameter)
Email Template Object
Web Assembly
View Model Object
Email Template property
事實上,你可能不甚至需要在所有和公正的綁定視圖模型該域對象的視圖。但如果不瞭解更多情況,這很難說。
正如您所發現的,依賴關係只應將內部的指向域核心。 (實際上,Repository引用也是向後的,但這超出了問題的範圍。)支持它的功能和結構屬於Core,或者功能本身屬於Web。問題中的域的結構有點模糊,所以對於細節很輕描淡寫,但原則是一樣的。
你必須在覈心中使用視圖模型嗎?他們可以不被轉換成域對象,而是通過它們嗎? – Ric
核心不應該對視圖模型有任何依賴性,這些是應用程序級別的對象。如果有*代表這種結構的*商業模型,那麼這將在Core中進行,並且應用層將引用它。 – David
我將它們轉換爲上下文操作的域模型,但我想使用附加到ViewModel的屬性,因爲這些是我可以重現'DisplayName'值的唯一方法。我基本上希望電子郵件在ViewModel中的每個項目都有Label,Field。 – JimmyB