から継承型へのSystem.Typeのリストを拘束し:は基本型
List<Type> Requires = new List<Type>();
彼らは共通の親を持っているので、どのように私はこのリスト内のタイプを制限でしょうか?例えば
:
List<Type : Component> Requires = new List<Type>()
編集:私はこれを必要とする理由もう少し背景はので、多分、人々が理解することができます。私はComponents
のリストを含むクラスEntity
を持っています。各コンポーネントには、依存関係のリストとして機能するComponent
タイプのリストが必要です。したがって、実行時にEntity
にComponent
を追加しようとすると、そのコンポーネントに既に必要なコンポーネントが付属しているかどうかを確認するクイックチェックが行われます。
例:
//Entity.cs
//...
_components = new List<Component>();
//...
public T AddComponent<T>() where T : Component, new()
{
var temp = new T();
if (_components.Exists((x) => x is T)) return null;
foreach (var t in temp.Requires)
{
if (_components.Exists(x => x.GetType() == t)) return null;
}
_components.Add(new T());
temp.gameObject = this;
return temp;
}
//...
//Component.cs
//...
protected internal Entity gameObject;
protected internal List<Type> Requires { get; }
//...
なぜなら「List」が必要です= new new List = newリスト ?そのリストの各項目は 'Component'か' Component'のサブクラスになります。 –
Sweeper
彼は私が思う 'System.Type'クラスについて話しています。 – apocalypse
私は 'System.Type'クラスについて話しています。私はリストにそれらの束を格納しているので、重複があるかどうかを確認するためにコンポーネントのリストに対してそれらをチェックすることができます。 – Julia