[asp.net]工厂设施简单喷油器

标签: Asp.net .Net C#
发布时间: 2017/3/26 3:49:33
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我感到迁移从 WindsorSimple Injector ,我试着按照下面这个链接。但找不到任何更换为︰

container.AddFacility<TypedFactoryFacility>();
container.Register(Component.For<ICacheDependencyFactory>().AsFactory());

什么,在上面的代码将更换 Simple Injector

编辑︰

ICacheDependencyFactory.cs

public interface ICacheDependencyFactory
{
    T Create<T>()
       where T : ICacheDependency;

    void Release<T>(T cacheDependency)
        where T : ICacheDependency;
}

解决方法 1:

城堡的工厂设施是能够生成的代理类基于您提供的接口。此代理类将回调到容器,要求建立这种类型的新实例。

简单的喷油器缺乏这种功能。简单的喷油器不实施此计划,因为︰

  • 一些工厂的应用程序代码需要,应限于相当 (只是对夫妇最多)。 精心设计的应用程序几乎不需要工厂。
  • 它是很容易实现这与手写的工厂。
  • 手写的工厂应该是你的作文根的一部分 (那里已经有一个依赖项的容器)。这可以阻止应用程序代码在容器上采取一个依赖项。

下面是一个示例︰

private sealed class CacheDependencyFactory : ICacheDependencyFactory {
    public Container Container { get; set; }
    public T Create<T>() where T : ICacheDependency, class {
        return this.Container.GetInstance<T>();
    }
}

这个工厂可以注册,如下所示︰

container.RegisterSingle<ICacheDependencyFactory>(
    new CacheDependencyFactory { Container = container });
官方微信
官方QQ群
31647020