gpt4 book ai didi

c# - 使用 TypedFactoryFacility 错误吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:59 25 4
gpt4 key购买 nike

我的 IoC 容器中安装了以下工厂:

// Factory for late-binding scenarios
container.AddFacility<TypedFactoryFacility>();
container.Register(
Component
.For<IServiceFactory>()
.AsFactory()
);

IServiceFactory 是:

public interface IServiceFactory
{
T Create<T>();
void Release(object service);
}

然后我的 Controller 看起来像这样:

public class PostsController : BaseController
{
private readonly IServiceFactory serviceFactory;

private LinkService linkService
{
get { return serviceFactory.Create<LinkService>(); }
}

public PostsController(IServiceFactory serviceFactory)
{
if (serviceFactory == null)
{
throw new ArgumentNullException("serviceFactory");
}
this.serviceFactory = serviceFactory;
}

重点是,即使 LinkServicePerWebRequest 生活方式,我可能并不总是需要它,因此,直接注入(inject)它对我来说似乎是错误的。

不过,现在突然想到的问题是:我在这里使用容器作为服务定位器吗?

最佳答案

如果T是无限的,在这种情况下,你是。您正在将要创建的类型的知识放入接收类中。此配置最好留给负责设置容器的类。在 CaSTLe 3.0 中,您可以选择使用 Lazy<T>推迟解决,您可以在此处轻松执行此操作:

 public PostsController(Lazy<ILinkService> linkService) 
{
if (linkService == null)
{
throw new ArgumentNullException("linkService");
}

this.linkService = linkService;
}

关于c# - 使用 TypedFactoryFacility 错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9471372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com