从字符串变量如何进行类初始化是可能的

时间:2011-10-27 06:20:42

标签: c# .net

是否可以通过字符串变量初始化类?我的语法如下:

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

我如何在c#中执行此操作?

1 个答案:

答案 0 :(得分: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;

(正如SaeedAmiri所指出的那样dynamic我没有创建一个类,我正在创建一个动态对象。在这种情况下,“class”意味着Duck Typing“类”。所以如果你创建一个包含字段WalkLikeADuck的动态对象,然后任何需要WalkLikeADuck的人都可以使用它,即使该对象实际上不是Duck