3

このようなことは可能ですか?

  1. クラスを作成し、それをアセンブリに入れます。

    namespace some
    {
        public class foo{
            ..etc
    }
    
  2. 現在のアプリドメインにロードします

    Assembly.LoadFrom("some.foo.dll");
    
  3. タイプを取り出す

    Type t = Type.GetType("some.foo");
    

基本的に、実際の型を t に取得する方法はありますか?

4

3 に答える 3

1

質問を理解しているかどうかわかりません。タイプをインスタンス化したいと思います。

これは、パブリックのデフォルト コンストラクターを呼び出します。

// specify the full name and assembly name, to make sure that you get the some.foo
// from the assembly in question.
Type t = Type.GetType("some.foo, some.foo");
object instance = Activator.CreateInstance(t);

オーバーロードを見て、他のコンストラクターを呼び出します。

于 2012-09-04T08:43:58.503 に答える
1

リフレクションを使用してオブジェクトをインスタンス化できます。たとえば、デフォルトのコンストラクタを使用してインスタンス化するには:

Type.GetType("Foo").GetConstructor().Invoke();

文字列を受け取るコンストラクターを使用してインスタンス化するには、次を使用します。

Type.GetType("Foo").GetConstructor(new[] { typeof(string) }).Invoke(new [] { "bar" });
于 2012-09-04T08:45:58.893 に答える
0
var assembly = Assembly.LoadFrom("SomeAssembly.dll");
assembly.GetType("SomeType");
于 2015-02-27T02:56:54.813 に答える