私はゲームのコンポーネントエンティティシステムを書いていますが、少し障害にぶつかりました。List<Component>
エンティティのすべてのコンポーネントを含むComponentListという派生クラスがあります。GetComponentというコンポーネントを返すメソッドもあります。これは文字列名で行われます。
public Component GetComponent(string name)
{
foreach (var c in this)
{
if (c.Name == name)
return c;
}
throw new Exception("Component " + name + " does not exist.");
}
ただし、Componentからクラスを派生させ、それをComponentListに貼り付けてから引き戻す場合、その型にキャストする必要があります。これは少し不便です。
TestComponent t1 = (TestComponent)Entity.ComponentList.GetComponent("Test1");
<T>のタイプを取得するための特別な魔法の方法があることは知っていますが、それをどのように使用するか、またはこの状況に適用できるかどうかはわかりません。なにか提案を?