根据属性注册命名服务

时间:2016-06-23 12:29:19

标签: c# .net autofac

所以我想做的就是......

[Name("MY_CLASS")]
public class MyClass : IMyInterace {...}

或者

public class MyClass : IMyInterace {
    string Name => "MY_CLASS"; // part of interface
}

然后在autofac中的东西像...

builder.RegisterAssemblyTypes(asm)
  .Where(...) // lazy typing that properly
  .Named<IMyInterface>(x => x.Name);

这有可能吗?

PS:我意识到我可以将这些实现注册为命名服务,但这有两个缺点:

  1. 许多条目,以及在添加新内容时要忘记的另一件事
  2. 名称和班级位于不同的地方,而不是在一个地方很好地

1 个答案:

答案 0 :(得分:0)

也许您应该考虑另一种方式,编写代码来查找可用的类(反射?),并在满足条件时运行builder.RegisterType