按基本类型注册类型,并在运行时使用Autofac解析

时间:2014-08-29 14:01:31

标签: c# .net asp.net-mvc autofac

我有以下设置:

public interface IServiceBase {}

public interface IService1: IServiceBase {}
public interface IService2: IServiceBase {}
// ... Snip lots of lines
public interface IService999: IServiceBase {}

public interface IConnection { T GetService<T>() where T: IServiceBase; }

IConnection已在Autofac注册。在其上调用GetService()将动态实现给定的接口并返回实例。

现在,我想为所有IServiceBase派生类型进行某种通用注册。我不想手动注册每个IServiceX,我不想进行汇编扫描(虽然我猜这是一个选项)。

在非法律代码中,这就是我想要的:

ContainerBuilder.Register<IServiceBase>(x=> x.Resolve<IConnection>().GetService);

这可能吗?

1 个答案:

答案 0 :(得分:0)

看起来我需要Autofac的IRegistrationSource功能。