首页 / C# / c# – 从其通用父类继承的嵌套类
c# – 从其通用父类继承的嵌套类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 从其通用父类继承的嵌套类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2780字,纯文字阅读大概需要4分钟。
内容图文
![c# – 从其通用父类继承的嵌套类](/upload/InfoBanner/zyjiaocheng/771/eb7fbdcb56194900a9e7c3c979497af5.jpg)
这有可能以某种方式,这个场景,A.N从这个代码示例继承A的代码?
这样设置的原因是我需要从Base< TType>继承的多个类.和嵌套:基础< TType>服务器只有基数的地方,客户端有扩展的嵌套.通过这种方式,可以很容易地使用代码,在这些代码之间它们之间会有一些共享代码.彼此.
问题是我必须在内部编写相同的代码
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];
}
}
}
编辑:
我更新了代码示例,以显示我正在尝试实现的目标.
为什么我要这样做,就是保持物理,网络和用户输入分开.
有多个不同的控制器,每个控制器都有自己的包装和放大器.拆包功能,控制器身份和访问物理引擎.
解决方法:
我有一个使用类的ecapsulation而不是继承的解决方案.
public abstract class BaseGeneric<T>
{
T data;
// ctor
protected BaseGeneric(T data)
{
this.data=data;
}
// methods
public abstract void Update();
// properties
public T Data
{
get { return data; }
set { data=value; }
}
// base nested class
public abstract class BaseNested<B> where B : BaseGeneric<T>
{
protected B @base;
// ctor
protected BaseNested(B @base)
{
this.@base=@base;
}
// methods
public abstract void Input(T data);
public void Update() { @base.Update(); }
// properties
public T Data
{
get { return @base.data; }
set { @base.data=value; }
}
}
}
// implementation base
public class Base : BaseGeneric<int>
{
// ctor
protected Base(int data) : base(data) { }
//methods
public override void Update()
{
this.Data+=1;
}
// implemented nested class
public class Nested : Base.BaseNested<Base>
{
// ctor
public Nested(int data) : base(new Base(data)) { }
public Nested(Base @base) : base(@base) { }
// methods
public override void Input(int data)
{
this.Data=data;
}
}
}
class Program
{
static void Main(string[] args)
{
// new implemented class with value 0
var nested=new Base.Nested(0);
// set value to 100
nested.Input(100);
// call update as implemented by `Base`.
nested.Update();
}
}
内容总结
以上是互联网集市为您收集整理的c# – 从其通用父类继承的嵌套类全部内容,希望文章能够帮你解决c# – 从其通用父类继承的嵌套类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。