タイプパラメータからジェネリッククラスを作成する方法はありますか?タイプパラメータから汎用クラス
私はこのようなものがあります:私が欲しいもの
public class SomeClass
{
public Type TypeOfAnotherClass { get; set; }
}
public class OneMoreClass
{
}
public class GenericClass<T>
where T : class
{
public void DoNothing() {}
}
public class GenericClass
{
public static GenericClass<T> GetInstance<T>(T ignored)
where T : class
{
return new GenericClass<T>();
}
}
がタイプからGenericClassを作成することです。例:
var SC = new SomeClass();
SC.TypeOfAnotherClass = typeof(OneMoreClass);
var generic = GenericClass.GetInstance(SC.TypeOfAnotherClass);
Assert.AreEqual(typeof(GenericClass<OneMoreClass>), generic.GetType());
ここでは、私はGenericClass<OneMoreClass>
のインスタンスを取得するために期待するが、私はまた、その型のインスタンスを使用してみましたGenericClass<Type>
を取得します。例:
var generic = GenericClass.GetInstance(Activator.CreateInstance(SC.TypeOfAnotherClass));
私は
GenericClass<object>
を取得し、この時、このタスクを達成する方法はありますか?
どのくらい遅いですか? – Gabe
@Gabe - リフレクションを使用した場合のパフォーマンスヒットを表示するために、私の答えにさらに追加しました。 – CodingWithSpike
「遅い」とは「2マイクロ秒かかる」という意味です。 1秒間に数千回だけ行うのはかなり速いですが、何百万回も行う必要がある場合は遅すぎます。 – Gabe