【发布时间】:2011-02-10 03:51:01
【问题描述】:
如果一个程序实际上只是反序列化了一个对象(实际上并不重要,只是说使用了 BinaryFormatter)。
什么是重新注入此对象的依赖项的好设计?
这有一个共同的模式吗?
我想我需要将 Deserialize() 方法包装起来以充当容器内的工厂。
谢谢!
【问题讨论】:
标签: c# dependency-injection ioc-container autofac
如果一个程序实际上只是反序列化了一个对象(实际上并不重要,只是说使用了 BinaryFormatter)。
什么是重新注入此对象的依赖项的好设计?
这有一个共同的模式吗?
我想我需要将 Deserialize() 方法包装起来以充当容器内的工厂。
谢谢!
【问题讨论】:
标签: c# dependency-injection ioc-container autofac
您不应序列化具有自身无法序列化的依赖项的对象。
相反,将其拆分为两个类:将可序列化的部分提取到一个单独的类中。
反序列化后,您可以将生成的对象与原始类的一个实例(具有依赖关系的实例)相关联。
【讨论】:
我会使用OnDeserialized 属性来指向一个可以进行重新注入的方法。
【讨论】:
Unity 有一个“BuildUp”的概念,您可以要求它满足现有对象的依赖关系。我不知道 autofac(我猜你是从标签中使用的)是否有等价物。
【讨论】: