文字列変数でクラスを初期化できますか?私の構文は以下の通りです:文字列変数からクラス初期化方法は可能です
string sClassContainer="
class a
{
Property1;
Property2;
}"
私はこれをC#でどのようにしますか?
文字列変数でクラスを初期化できますか?私の構文は以下の通りです:文字列変数からクラス初期化方法は可能です
string sClassContainer="
class a
{
Property1;
Property2;
}"
私はこれをC#でどのようにしますか?
はい、できますが、ほとんど役に立たないでしょう。古い.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
が必要な人はそれを使用できます)
あなたの例では、特定のオブジェクトではなく特定のオブジェクトを作成します。 –
@SaeedAmiriダックタイピングだと思う。 「アヒルのように歩き、アヒルのように泳ぎ、アヒルのように羽ばたく鳥を見ると、私はその鳥をアヒルと呼ぶ」(http://en.wikipedia.org/wiki/Duck_typing)。 – xanatos
:)))私は聞いたことがない)非常に興味深い:))))。しかし、私はそれはそうではないと思う。なぜなら、サンプルはOPが望んでいる(実際には)あなたが正しいと思うなら、タイプが何回も使用できるからだ。そうでなければそれはアヒルではない:) –
文字列はどのような形式ですか?おそらくそれを解析し、その場でクラスを作成する以外に選択肢はありません。クラス定義はすでにわかっていますか? – SliverNinja
"sClassContainer"という文字列で定義されているクラス "a"をどうにかしてインスタンス化したいのですか?同様に何か?: 'var instanceOfA = MyClassGenerator.CreateInstance(sClassContainer);'私はあなたが尋ねていることを理解していると思いますが、それが可能かどうかはわかりません。 – Kjartan
このコードの目的は正確ですか?解決すべき具体的な課題がある場合は、それを達成するための他の簡単な方法があるかもしれません。 – Kjartan