2011-10-27 9 views
1

文字列変数でクラスを初期化できますか?私の構文は以下の通りです:文字列変数からクラス初期化方法は可能です

string sClassContainer=" 
class a 
{ 
    Property1; 
    Property2; 
}" 

私はこれをC#でどのようにしますか?

+0

文字列はどのような形式ですか?おそらくそれを解析し、その場でクラスを作成する以外に選択肢はありません。クラス定義はすでにわかっていますか? – SliverNinja

+0

"sClassContainer"という文字列で定義されているクラス "a"をどうにかしてインスタンス化したいのですか?同様に何か?: 'var instanceOfA = MyClassGenerator.CreateInstance(sClassContainer);'私はあなたが尋ねていることを理解していると思いますが、それが可能かどうかはわかりません。 – Kjartan

+1

このコードの目的は正確ですか?解決すべき具体的な課題がある場合は、それを達成するための他の簡単な方法があるかもしれません。 – Kjartan

答えて

0

はい、できますが、ほとんど役に立たないでしょう。古い.NETバージョンでも、How to programmatically compile code using C# compilerを使うことができます...しかし、それでは?リフレクションでのみ使用できます(技術的には、新しいクラスがインターフェースを実装している場合や、基本クラスのいくつかの仮想メソッドをオーバーライドした場合は、リフレクションによって作成してインターフェース/ベースクラスを使用してください)

完全な例はこちらIs it possible to dynamically compile and execute C# code fragments?

C#4.0では、dynamicを使用して「動的な」「クラス」を作成できます。

dynamic myObj = new ExpandoObject(); 
myObj.Prop1 = "Hello"; 
myObj["Prop2"] = "World. Today is "; 
string myPropName = "Prop3"; 
myObj[myPropName] = DateTime.Now; 

(私は動的オブジェクトを作成しています、クラスを作成していないよ。この場合は、「クラス」はDuck Typing「クラス」を意味します。あなたは、動的オブジェクトを作成するのであればdynamicでSaeedAmiriで述べたようにフィールドがWalkLikeADuckの場合は、Duckの場合でもWalkLikeADuckが必要な人はそれを使用できます)

+0

あなたの例では、特定のオブジェクトではなく特定のオブジェクトを作成します。 –

+0

@SaeedAmiriダックタイピングだと思う。 「アヒルのように歩き、アヒルのように泳ぎ、アヒルのように羽ばたく鳥を見ると、私はその鳥をアヒルと呼ぶ」(http://en.wikipedia.org/wiki/Duck_typing)。 – xanatos

+0

:)))私は聞いたことがない)非常に興味深い:))))。しかし、私はそれはそうではないと思う。なぜなら、サンプルはOPが望んでいる(実際には)あなたが正しいと思うなら、タイプが何回も使用できるからだ。そうでなければそれはアヒルではない:) –

関連する問題