IoC 和反序列化问题

IoC and Deserialization trouble

我正在为 IoC 使用 Ninject。

更新

我的存储库使用 XML 序列化程序来保存对象。

如何在反序列化具有相同 class (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 内核,因此没有注入依赖项。

您可以使用方法 IKernel.Inject(object, IParameter[]) 将依赖项注入任何具有 属性 注入的对象。但是,我会回应上面的评论并建议您重构您的代码,以便 services/behavior 与您的数据 objects/entities.

分开