我有一个基类和一些派生类,我想只使用一个通用的create方法,由工厂创建适当的实例并注入所有依赖项。使用Zenject是否可能?
factory.Create<Archer>()
目前我是这样做的,但是你会发现这不是一个非常干净的解决方案。
public class CustomFactory : IFactory<Type, BaseUnit>
{
private DiContainer _container;
public CustomFactory(DiContainer container)
{
_container = container;
}
public BaseUnit Create<Type>()
{
return null;
}
public BaseUnit Create(Type type)
{
if (type.BaseType != typeof(BaseUnit))
{
Debug.LogError("you cant create objects that are not derrived from base unit");
return null;
}
object obj = _container.Resolve(type) ;
return _container.InstantiatePrefabForComponent(type, obj as UnityEngine.Object, null, new object[0]) as BaseUnit;
}
}
Create<T>() where T: BaseUnit
,然后在你的方法中将所有type
的用法替换为typeof(T)
? - Evk