C# 为什么在DI中使用带Unity的Building
我正在试图弄清楚为什么/什么时候我会使用Unity容器的构建方法。如果我有以下资料:C# 为什么在DI中使用带Unity的Building,c#,dependency-injection,unity-container,C#,Dependency Injection,Unity Container,我正在试图弄清楚为什么/什么时候我会使用Unity容器的构建方法。如果我有以下资料: [TestInitialize] public void SetupEnvironment() { var container = new UnityContainer(); container.RegisterType<ILocalizingKeyHolder, FeeTypeKeyHolder>( typeof(FeeType).Name); va
[TestInitialize]
public void SetupEnvironment()
{
var container = new UnityContainer();
container.RegisterType<ILocalizingKeyHolder, FeeTypeKeyHolder>(
typeof(FeeType).Name);
var keyHolderFactory = new UnityLocalizingKeyHolderFactory(container);
var ctx = new TspDbContext(keyHolderFactory);
...
}
keyHolderFactory的实现如下:
public class UnityLocalizingKeyHolderFactory : ILocalizingKeyHolderFactory
{
private UnityContainer Container { get; set; }
public UnityLocalizingKeyHolderFactory(UnityContainer container)
{
this.Container = container;
}
public void AttachKeyHolder(ILocalizableEntity localizableEntity)
{
localizableEntity.KeyHolder = Container.Resolve<ILocalizingKeyHolder>(
localizableEntity.GetType().Name);
localizableEntity.UpdateLocalizingKey();
}
}
公共类UnityLocalizingKeyHolderFactory:ILocalizingKeyHolderFactory
{
私有UnityContainer容器{get;set;}
公共单元校准Keyholder工厂(单元容器)
{
this.Container=Container;
}
public void AttachKeyHolder(ILocalizableEntity localizableEntity)
{
localizableEntity.KeyHolder=容器.Resolve(
localizableEntity.GetType().Name);
localizableEntity.UpdateLocalizingKey();
}
}
我真的看不出使用Building将LocalizingKeyHolder注入实体有什么好处
这个
localizableEntity.KeyHolder=
Resolve(localizableEntity.GetType().Name);
看起来很简单。因此:
@乔治-谢谢。我得到了那么多,但为什么要使用它呢?既然我还必须将它传递到容器中,那么上面我没有做过的其他事情还有什么?
public class UnityLocalizingKeyHolderFactory : ILocalizingKeyHolderFactory
{
private UnityContainer Container { get; set; }
public UnityLocalizingKeyHolderFactory(UnityContainer container)
{
this.Container = container;
}
public void AttachKeyHolder(ILocalizableEntity localizableEntity)
{
localizableEntity.KeyHolder = Container.Resolve<ILocalizingKeyHolder>(
localizableEntity.GetType().Name);
localizableEntity.UpdateLocalizingKey();
}
}
localizableEntity.KeyHolder =
Container.Resolve<ILocalizingKeyHolder>(localizableEntity.GetType().Name);