我的服务使用一个实用程序类,并且该实用程序类有几个公共属性。我需要打电话来确保设置这些公共属性吗?
该服务使用 ASP.NET 主机。在 Global.ASAX 内部,我声明了一个新的 AppHostBase:
public class MyServiceHost : AppHostBase
{
public MyServiceHost() : base("My Service Host", typeof(ServiceLibrary).Assembly) {}
public override void Configure(Funq.Container container)
{
container.Register<IDbConnectionFactory>(dbConFactory);
container.RegisterAutoWired<UtilityLibrary>();
container.RegisterAutoWired<RepositoryLibrary>();
}
}
在我的存储库和实用程序库中都有一个主类。这可能类接收容器并注册更具体的实用程序和存储库:
public class UtilityLibrary
{
public UtilityLibrary(Funq.Container container)
{
container.RegisterAutoWired<WidgetAActions>();
container.RegisterAutoWired<WidgetBActions>();
}
}
在下面的示例中,在 RepositoryLibrary 类的构造函数中设置了 WidgetARepository。包含 WidgetARepository 的 RepositoryLibrary 类在 AppHost 的Configure
方法中提供给 Container(上面的第一个片段)。即便如此,WidgetARepository(如下)从未设置:
public class WidgetAActions
{
public WidgetARepository WidgetARepository { get; set; }
public WidgetA Get(string id)
{
var item = this.WidgetARepository.Get(id);
if (item == null) { return null; }
// Do something else
return item;
}
}
我必须手动调用Resolve()
吗?这样做似乎会破坏注入的目的。