Castle Windsordependency injection – 恢复现有实例的依赖关系

我有一个相当直接的场景,我试图解决,但我正在与温莎打几个砖墙 – 也许我试图以错误的方式解决问题?

我有一个名为Foo的类型如下:

public class Foo { [NonSerialized] private IBar bar; public IBar Bar { get { return this.bar; } set { this.bar = value; } } public Foo(IBar bar) { } } 

我以正常方式通过容器实例化:

 var myFoo = container.Resolve(); 

依赖关系IBar在容器中注册,并在创建对象时得到解析。 既然已经创建了类型,我需要序列化它,我不想序列化IBar,因此它标有NonSerialized属性。

然后我需要反序列化对象并将其返回到它的前状态。 我如何使用Castle Windsor实现这一目标? 我已经有了一个实例,它只是缺少它的依赖项。

如果我使用Unity,我会使用BuildUp()来解决问题,但我想在这种情况下使用Castle Windsor。

似乎Foo有多重顾虑。 尝试通过为数据创建新类来将数据部分与行为分开,并将其用作Foo类中的属性:

 [Serializable] public class FooData { } public class Foo { private FooData data = new FooData(); public IBar Bar { get; private set; } public FooData Data { get; set; } public Foo(IBar bar) { } } 

当你有这个构造时,你可以反序列化FooData并在创建的Foo使用它:

 var foo = container.Get(); foo.Data = DeserializeData();