我使用的是Autofac,我不是IoC大师。
考虑这种情况:
public interface IBeforeRequestTask
{
void Execute();
}
public interface IAfterRequestTask
{
void Execute();
}
public class TaskExecutor : IBeforeRequestTask, IAfterRequestTask
{
void IBeforeRequestTask.Execute()
{
// code
}
void IAfterRequestTask.Execute()
{
// code
}
}
所以,我们有明确的实现。 您将如何注册这些界面?
我认为我们无法做到这一点:
builder.RegisterType<IBeforeRequestTask> ...
builder.RegisterType<IAfterRequestTask> ...
我在Autofac Registration Docs中读到我们必须注册具体类型 类似的问题,但没有处理Autofac是这一个:TinyIoC: Register multiple interfaces on a single instance
嗯,我知道这可以通过1-1(每个类一个接口,然后注册具体类型)很容易。但现在我很好奇 不要记得我在使用StructureMap看到类似下面代码的地方(可能是错误的):
action.AddTypesOf<IBeforeRequestTask>();
action.AddTypesOf<IAfterRequestTask>();
希望我明白自己。谢谢大家。
修改
我创建了this样本来帮助。 ; - )
答案 0 :(得分:1)
我不确定你想要实现什么,但如果你想在两个接口下的容器中注册单个类,并且你想拥有它的单个实例,你就可以这样做。
builder.RegisterType<TaskExecutor>().As<IBeforeRequestTask>().As<IAfterRequestTask>().SingleInstance();