1

XNAコンテンツローダーを作成しています:

public object[] LoadIt(KeyValuePair<Type,string>[] resources, ContentManager content)
{
    object[] result = new object[resources.Length];
    for(int i=0;i<result.Length;i++)
    {
        result[i] = content.Load<resources[i].Key>(resources[i].Value);
    }
    return result;
}

しかし、どうやら変数からジェネリック型を渡すことは許可されていないので、どうすればこれを解決できますか?

また、型をジェネリックとしてメソッド自体に渡す場合、メソッドを呼び出して変数から型を取得するオブジェクトが必要です。ロードするファイルを宣言するファイルを作成し、そのファイルの文字列から、ロードするファイルのタイプとパスを渡す必要があります

4

2 に答える 2

0

タイプがコンパイル時の定数ではないため、単純にできません。

できることobjectは、戻り値としてのみ必要なため、問題なくリフレクションを使用することです。

public object[] LoadIt(KeyValuePair<Type,string>[] resources, ContentManager content)
{
    object[] result = new object[resources.Length];
    for(int i=0;i<result.Length;i++)
    {
        result[i] = content
                      .GetType()
                      .GetMethod("Load")
                      .MakeGenericMethod(resources[i].Key)
                      .Invoke(content, new object[] { resources[i].Value });
    }
    return result;
}
于 2013-06-25T11:05:09.433 に答える