我有一个使用ServiceStack创建的服务。我将 Funq 用于我的依赖注入,因为它默认附带 ServiceStack,但这可能是其他 DI 容器表现出的行为。
我在启动时注册我的类型:
this.AppContainer.RegisterAs<ConcreteDownloadServices, IDownloadServices>();`
我在一个类中有这个构造函数:
private readonly IDownloadServices downloadServices;
public ExampleService(IDownloadServices downloadServices)
{
this.downloadServices = downloadServices;
}
我的具体实现的构造函数是:
public ConcreteDownloadServices()
{
this.ArbitraryProperty = "ArbitraryString";
}
一切都解决得很好,我可以进入代码并看到事情按预期工作。但是,AbritraryProperty
没有正确设置。我可以逐步查看它设置为字符串值,但是一旦代码返回到调用代码(在本例中,它将是 的构造函数ExampleService
)ArbitraryProperty
现在为空。
- 这种行为是设计使然吗?
- 如果是设计使然,那么使用 DI 是否意味着我不应该在具体实现的构造函数中做任何事情?
- 如果是设计使然,那么为自动属性设置默认值的正确方法是什么?
- 如果不是设计使然,那又是怎么回事?