1
我正在使用Ninject進行IoC。IoC和反序列化問題
UPDATE
我的倉庫使用XML序列中持久對象。
如何在具有行爲和狀態的實體在同一個類(POCO)中進行反序列化並且不使用服務定位器反模式之後注入依賴項?
這是保存方法:
public void Save(IIntegrationService service)
{
if (service.Id == 0)
servico.Id = GetNewServiceId();
var serializer = new XmlSerializer(service.GetType());
using (TextWriter writer = new StreamWriter(File.Open(GetStoreFileName(service), FileMode.Create)))
{
serializer.Serialize(writer, service);
}
}
這是GETALL方法:
public List<IIntegrationService> GetAll()
{
var services = new List<IIntegrationService>();
foreach (string fileName in Directory.GetFiles(StoreDirectory, "*.xml"))
{
Type serviceTypeOfFile = GetServiceTypeByGUID(GetGUIDFromFileName(fileName));
var serializer = new XmlSerializer(serviceTypeOfFile);
using (XmlReader reader = XmlReader.Create(fileName))
{
var service = (IIntegrationService) serializer.Deserialize(reader);
services.Add(service);
}
return services;
}
}
的問題是,創建服務並不來源於ninject內核,所以,依賴關係都沒有注射。
「我的存儲庫使用序列化和反序列化來存儲對象。」 - 向我們顯示代碼。你有什麼嘗試?此外,如果您使用的是二進制序列化,則當您升級應用程序並增加程序集版本號時,會出現令人討厭的驚喜,因爲您的應用程序無法反序列化數據庫中的對象。 – NightOwl888 2015-03-02 21:59:35
你問題的核心是你試圖將依賴注入到實體中。防止這樣做。相關:https://stackoverflow.com/questions/28715966/entity-framework-object-materialization-and-dependency-injection – Steven 2015-03-02 22:21:46
@Vinicius請上傳代碼。或者這個帖子可能被標記。我對你想要做的事情很感興趣。所以請上傳:) – 2015-03-03 08:33:37