2009-08-09 9 views
5

文字列変数でクラスを初期化することは可能ですか?私はPHPでコードを持っています。C#で文字列変数でクラスを初期化しますか?

<?php 
    $classname = "test"; 

    $oTest = new $classname(); 

    class test{ 
    } 
?> 

これをC#でどのように行うのですか?

+0

私はJaredParがあなたの質問に答えたと思いますが、なぜこれは必要ですか?あなたは何を解決しようとしていますか? – Zyphrax

答えて

19
System.Activator.CreateInstance(Type.GetType(className)) 

ただし、C#3.0は静的型付けされた言語です。あなたは、返されたオブジェクトに対して単にランダムメソッドを呼び出すことはできません。インスタンス化するクラスに共通のインタフェースを実装し、上記の式の結果をインタフェースにキャストしたり、手動でリフレクションを使用して返されたオブジェクトのメソッドを呼び出すことができます。

+1

答えを見ると、私はその質問を理解するのに役立ちました。 +1 –

+0

「C#、バージョン3.0以降は静的に型指定された言語です」とはどういう意味ですか?これは、それが最近になって静的型付き言語になったことを示しています。それはいつもありました。 C#4.0には新しい動的キーワードがあります。これは、必要に応じてC#が動的言語のいくつかの側面を取得することを意味します。 –

+0

コリン:私はあいまいな言葉かもしれません。一定。 –

5

Activator.CreateInstanceメソッドを使用すると、と同様のの結果が得られます。ただし、型の完全修飾名に加えてアセンブリ名を指定する必要があります

var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test"); 
関連する問題