C# 如何使用Unity按名称注册多个类型?
我是Unity的新手(来自温莎城堡),所以我知道我想用依赖性注射做什么,我只是不知道如何用Unity来做 如能提供指导,将不胜感激 还有一些类似的实现:C# 如何使用Unity按名称注册多个类型?,c#,unity-container,C#,Unity Container,我是Unity的新手(来自温莎城堡),所以我知道我想用依赖性注射做什么,我只是不知道如何用Unity来做 如能提供指导,将不胜感激 还有一些类似的实现: public class Strategy { ... etc } public class FooStrategy : Strategy { ... etc } public class BarStrategy : Strategy { ... etc } container.RegisterType<IStrat
public class Strategy
{
... etc
}
public class FooStrategy : Strategy
{
... etc
}
public class BarStrategy : Strategy
{
... etc
}
container.RegisterType<IStrategy, FooStrategy>("FooStrategy");
container.RegisterType<IStrategy, BarStrategy>("BarStrategy");
var foo = container.Resolve<IStrategy>("FooStrategy");
Assert.IsTrue(foo.GetType() == typeof (FooStrategy));
目前我可以这样一个一个注册:
public class Strategy
{
... etc
}
public class FooStrategy : Strategy
{
... etc
}
public class BarStrategy : Strategy
{
... etc
}
container.RegisterType<IStrategy, FooStrategy>("FooStrategy");
container.RegisterType<IStrategy, BarStrategy>("BarStrategy");
var foo = container.Resolve<IStrategy>("FooStrategy");
Assert.IsTrue(foo.GetType() == typeof (FooStrategy));
container.RegisterType(“FooStrategy”);
container.RegisterType(“BarStrategy”);
var foo=container.Resolve(“FooStrategy”);
Assert.IsTrue(foo.GetType()==typeof(FooStrategy));
我怎样才能更有效地做到这一点?我想按实现名称注册所有实现IStStrategy的类型
container.RegisterTypes(AllClasses.FromLoadedAssemblies().Where(t => typeof(Strategy).IsAssignableFrom(t)));
在默认情况下,容器中使用的名称
似乎是实现名称,因此它最终非常简单
我唯一需要改变的是使用POCO作为基本类型,而不是接口。你想要自动获取所有实现并在容器中注册它们吗?是的,所以我想说
注册所有实现IStrategy的类型,而不是像上面那样逐个注册我的类型,对于具体类型的名称
,结果将与上述相同\