你如何在Unity容器中从不同的程序集中注册内部类?
UnityContainer container = new UnityContainer();
container.RegisterType<IPublicInterface, InternalClassImpl>(new ContainerControlledLifetimeManager());
如果InternalClassImpl可以在它的程序集外部访问,那么这个方法非常好用。但是,如果它是internal的,并且实现了IPublicInterface,唯一的可行选择似乎是提供一个可以创建它们的工厂。
但是,如果您有一个工厂来创建类,如何继续使用Unity进行依赖注入来注入它的依赖关系呢?
大型应用程序
UnityContainer container = new UnityContainer();
container.RegisterType<IPublicInterface>(new InjectionFactory(c =>
InternalClassImplFactory.MakeInternalClassImpl()));
小型图书馆
namespace SmallLibrary
{
public interface IPublicInterface
{
}
public class InternalClassImplFactory
{
public static IPublicInterface MakeInternalClassImpl()
{
return new InternalClassImpl();
}
}
internal class InternalClassImpl : IPublicInterface
{
public InternalClassImpl()
{
}
}
}
但是如果InternalClassImpl需要从大型应用和内部SmallLibrary类中注入依赖项会发生什么呢?
InternalsVisibleToAttribute
吗? - ProgrammingLlama