是否有可能实现这样的情况,即A.N通过以下代码从A继承代码?
之所以设置它们这样,是因为我需要多个类从Base<TType>
继承,并且Nested : Base<TType>
在服务器端仅具有基础部分,而在客户端具有扩展的Nested。这样一来,很容易使用代码,它们之间会共享一些代码。
问题是我必须在里面编写完全相同的代码。
A and A.N
B and B.N
C and C.N
我已经通过将嵌套抽象类替换为接口并执行A.N:A,INested
来暂时解决了这个问题,但现在我必须再次在所有嵌套类中重写Base<TType>.Nested
代码。目前,嵌套类很小且易于管理。
希望这不是一个令人困惑的问题...
public abstract class Base<TType> where TType : class
{
public TType data;
internal void CommonCodeForAll() { }
public abstract void Update();
public abstract class Nested : Base<TType>
{
public abstract void Input();
}
}
public class A : Base<someClass>
{
public float Somevariable;
public void SpecificFunctionToA() { }
public override void Update()
{
// code that gets executed on server & client side that is unique to A
}
public class N : A.Nested
{
public override void Input()
{
if (data.IsReady()) { Somevariable *= 2; }
SpecificFunctionToA();
}
}
}
public class B : Base<anotherClass>
{
public float Somevariable;
public int index;
public int[] Grid;
public void SomethingElse() { }
public override void Update()
{
// code that gets executed on server & client side that is unique to B
}
public class N : B.Nested
{
public override void Input()
{
if (Grid[index] == -1) { SomethingElse(); }
data.Somevariable = Grid[index];
}
}
}
编辑:我更新了代码示例以展示我想要实现的内容。
我之所以要这样做,是为了将物理、网络和用户输入分开处理。
有多个不同的控制器,每个控制器都有自己的打包和解包函数、控制器标识和对物理引擎的访问权限。
A类
一样从Input()
中调用Update()
。 - John Alexiou