【发布时间】:2018-10-08 22:06:27
【问题描述】:
所以我有一个基类和一些派生类,我只想拥有一个具有通用创建方法的工厂,它将创建适当的实例并注入所有依赖项。这可能使用 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,然后在你的方法中用typeof(T)替换所有type的用法吗?
标签: c# unity3d dependency-injection zenject