如果一個程序實際上只是反序列化一個對象(實際上並不重要,但只是說使用了BinaryFormatter)。重新生成一個新反序列化對象的依賴關係
什麼是用於重新注入此對象的依賴關係的好設計?
這是否有一個共同的模式?
我想我需要將Deserialize()方法包裝起來作爲容器內的工廠。
謝謝!
如果一個程序實際上只是反序列化一個對象(實際上並不重要,但只是說使用了BinaryFormatter)。重新生成一個新反序列化對象的依賴關係
什麼是用於重新注入此對象的依賴關係的好設計?
這是否有一個共同的模式?
我想我需要將Deserialize()方法包裝起來作爲容器內的工廠。
謝謝!
您不應該序列化具有本身無法序列化的依賴項的對象。
取而代之的是將其分成兩類:將可序列化的部分提取到單獨的類中。
反序列化後,可以將生成的對象與原始類(具有依賴項的類)的實例相關聯。
我會使用OnDeserialized屬性指向一個方法,將做重新注入。
但是,這肯定需要依賴容器本身,即打破黃金IoC規則? – nbevans 2010-04-20 13:54:50
如果您使用的是類似Microsoft.Practices.ServiceLocation的東西,則屬性爲容器中立。 – 2010-04-20 14:15:12
容器中立,但仍依賴於容器。 – 2010-04-20 14:18:55
Unity有一個「BuildUp」的概念,您可以要求它實現現有對象的依賴關係。我不知道autofac(我推測你使用的是標籤)是否具有相同的功能。
屬性注入是Autofac equivaivalent – 2010-04-20 17:15:01
「計算機科學中的所有問題都可以通過另一個間接層面來解決,除了間接層太多的問題。」 – 2010-04-20 14:06:00
我認爲我的建議是*去除*間接層。 (或者至少不再需要額外的!);) – 2010-04-20 14:07:09
不得不承認傑夫,這是一個跨越我心中的可能解決方案。我現在已經實現了,代碼庫對它更好:) – nbevans 2010-04-26 16:07:14