gpt4 book ai didi

c# - 实现一个非常特殊的通用签名

转载 作者:行者123 更新时间:2023-12-02 04:51:22 25 4
gpt4 key购买 nike

<分区>

我目前正在基于 Unity 的装饰器模型构建自己的游戏引擎。我有三个类(SceneStateManager(一次只控制一个场景)> Scene > SceneLayer > GameObject > Component),它们构成场景层次结构,除了名称和一些更小、非常具体的功能外,它们基本相同。 (在这种情况下重写方法会做到这一点)

所有类都可以从父层次结构级别类类型初始化,并控制多个子类。由于这些类共享许多通用功能,我想让它们派生自一个基类,该基类对共享功能进行分组以简化代码。

“ super 基类”(ListJob<T>)是一个控制 child 的类,直到现在,所有前面提到的类型都从它派生以至少简化那部分。因此,子级处理本身不需要包含在此处的代码中,因为它已经运行良好。

我现在需要为所有场景层次类将来派生的基类获取适当的通用签名。我当前的解决方案无法编译并出现此错误:http://msdn.microsoft.com/en-us/library/bb384252(v=vs.100).aspx


我当前版本的通用签名和 SceneSystemJob 类:

public abstract class SceneSystemJob<TItem, TParent> : ListJob<TItem>, IInitializable<TParent>  
where TItem : IInitializable<SceneSystemJob<TItem, TParent>>
{
private TParent _Parent = default(TParent);

public TParent Parent
{
get
{
return _Parent;
}
protected set
{
_Parent = value;
}
}

// Implementation

public void Initialize(TParent parent)
{
this.Parent = parent;
}
}

场景状态管理器:

public class SceneStateManager // Controls only one Child and does not derive from super base class

场景:

public class Scene : SceneSystemJob<SceneLayer, SceneStateManager>

场景层:

public class SceneLayer : SceneSystemJob<GameObject, Scene>

游戏对象:

public class GameObject: SceneSystemJob<Component, SceneLayer>

组件:

public abstract class Component : Manager, IInitializable<GameObject>

接口(interface)IInitializable:

public interface IInitializable<TParent>
{
void Initialize(TParent parent);
}

如果您还需要更多代码,请告诉我。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com