【发布时间】:2010-06-23 02:08:54
【问题描述】:
如何配置 Unity,以便从某个基类派生的任何类都可以通过为基类定义的注入管道。
public abstract class Base
{
public IDependency Dependency {get;set;}
};
public class Derived1: Base
{
};
public class Derived2: Base
{
};
container.RegisterType<Base>(new InjectionProperty("Dependency", new ResolvedParameter<IDependency>()));
var d1 = container.Resolve<Derived1>();
因此,我需要向 Unity 注册基类,同时解析派生类,以便为基类指定的所有注入都应用于派生类。
由于我的项目限制,不允许使用DependencyAttribute 装饰基类属性。
【问题讨论】:
-
您要查找的内容称为自动注册、扫描或基于约定的注册。许多 DI 容器(如 Castle Windsor 和 StructureMap)支持这一点,但 Unity 不支持。我可以推荐一个更好的 DI Container 吗?
-
谢谢,但目前恐怕无法切换到另一个 DI 框架。实际上,我正在寻找智能 BuildUp 而不是我所有后代的自动注册。当然,自动注册也可以让我实现我的目标。但我认为将继承考虑在内是更合适的行为。
-
也许您会发现这个相关问题(及其答案)很有用:stackoverflow.com/questions/1769056/…
-
谢谢,@Mark。但是,自动注册不是我需要的。我需要为祖先注册的注射才能应用于后代。我根本不想注册后代。此外,可以通过一些专门的注射来注册后代。并且应该应用所有注入(“继承”和“专业”)。
标签: inheritance dependency-injection unity-container