代码:
public abstract class CMD
{
protected A m_a= null;
protected CMD()
{
}
public CMD(A a)
{
m_a= a;
}
}
public class MoveCMD : CMD
{
public MoveCMD()
{
}
public MoveCMD(BaseCtrl baseCtrl) : base()
{
m_ctrol = baseCtrl;
}
}
public class A
{
//需要在子类中具体操作
internal T DoCMD<T>() where T : CMD, new()
{
Debug.LogError("Ctrl DoCMD--- " + typeof(T).ToString());
T cmd = new T();
cmd.DoStart();
m_CMDList.Add(cmd);
return cmd;
}
}
public class B: A
{
public override void InitLimbnode() {
DoCMD<MoveCMD>();
}
}
B b = new B();
b.InitLimbnode();
在class A中DoCMD函数里面的“T cmd = new T()”这一句代码想改成“T cmd = new T(this)”,将a作为参数在new T的时候传入进去,结果不行。
原因是new()约束导致了在对泛型new的时候不能够传入参数。
如何实现上面的想法呢?
希望大佬解答