[解決済み] C#のジェネリックス - 引数を指定して変数型のインスタンスを作成するには?重複
2023-04-24 13:09:44
質問
ジェネリッククラスで、ジェネリックタイプを持つオブジェクトをインスタンス化したい。その型のコンストラクタの引数を使いたい。
私のコードです。
public class GenericClass<T> where T : Some_Base_Class, new()
{
public static T SomeFunction(string s)
{
if (String.IsNullOrEmpty(s))
return new T(some_param);
}
}
でエラーが出ます。
new T(some_param)
'T': 変数のインスタンスを作成する際に引数を与えることができない 型
どのようにすればよいのでしょうか?
どのように解決するのですか?
を見てみましょう。
Activator.CreateInstance
. 例えば
var instance = Activator.CreateInstance(typeof(T), new object[] { null, null });
を置き換えると、明らかに
null
をその型のコンストラクタの1つが期待する適切な値に置き換えます。
に関するコンパイラーエラーが発生した場合
cannot convert object to type T
についてコンパイラエラーが発生した場合、インクルードする
as T
:
var instance = Activator.CreateInstance(typeof(T),
new object[] { null, null }) as T;
関連
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] Typeから新しいオブジェクトのインスタンスを作成する方法
-
[解決済み] 汎用型Tのクラスインスタンスを取得する方法を教えてください。
-
[解決済み] 汎用クラスやメソッドのメンバからTの型を取得する方法
-
[解決済み] メソッドの戻り値の型を汎用的にするにはどうすればよいですか?
-
[解決済み] テンプレート型のC#ジェネリックnew()への引数の渡し方
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】C#で四捨五入する方法
-
[解決済み】パディングが無効で、削除できない?
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] テンプレート型のC#ジェネリックnew()への引数の渡し方