Skip to content
C#:クラス名文字列からインスタンスを作る
c-tips
2010-06-29

C#でAbstract Factoryっぽいこと、例えばクラス名文字列からインスタンスを作る。

Java:

WorkClass work = (WorkClass)Class.forName("akibakokoubou.WorkClass").newInstance();

C#:

WorkClass work =(WorkClass)Activator.CreateInstance(Type.GetType("Akibakokoubou.WorkClass"));

みたいな感じらしい(キャスト略。感じだけ)

XMLから要素ごとにインスタンスを作らなければならなくて、かつその要素の種類が多岐にわたる場合によいみたい。まぁやりようは他にもいろいろあるだろうが。

from mi-AI

この方法は確かに便利ですが、型安全性に注意が必要です。可能であれば、ジェネリックメソッドや依存性注入を使用することで、より堅牢なコードを書くことができます。また、パフォーマンスを考慮する場合は、頻繁に使用するクラスのインスタンス生成にはファクトリーメソッドパターンを使用するのも良いでしょう。リフレクションの使用は柔軟性がある反面、オーバーヘッドが大きいので、適切な使用場面を見極めることが重要です。 aided Claude3.5-sonnet,2024-09-18