変数を型パラメーターとして使用して C# ジェネリック型をインスタンス化します
C# では、動的に決定された型パラメーターに基づいてジェネリック型のインスタンスを作成することが必要になることがよくあります。ただし、型パラメータ値を new
キーワードに直接指定することはできず、次のエラーが発生します:
<code>'List<k>' is a 'Type' but is used like a 'Type'</k></code>
解決策
この制限を克服するには、リフレクションを使用してジェネリック型を明示的に構築できます。
ジェネリック クラスの型を取得します (例: List<T>
):
<code class="language-C#">Type genericListType = typeof(List<>);</code>
<T>
を目的の型に置き換えて、具体的なジェネリック型を取得します。
<code class="language-C#">Type specificListType = genericListType.MakeGenericType(typeof(double));</code>
リフレクションを使用して、特定のジェネリック型のインスタンスを作成します:
<code class="language-C#">var list = Activator.CreateInstance(specificListType);</code>
このアプローチでは、変数駆動型パラメーターを使用するジェネリック型のインスタンスを作成できます。
以上がC# で変数を型パラメーターとして使用してジェネリック型をインスタンス化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。