在c#.net中动态创建一个类

在c#.net中动态创建一个类,c#,C#,我想在c#.net中动态创建一个类 我尝试使用匿名方法,因为成员变量的数量是动态给定的, 我试着这样做 string element = "element"; string str = String.Empty; for (int i = 0; i < elementsCount; i++) { str = String.Concat(str, element + i, "=String.Empty", ","); if (i == elementsCount - 1)

我想在c#.net中动态创建一个类

我尝试使用匿名方法,因为成员变量的数量是动态给定的, 我试着这样做

string element = "element";
string str = String.Empty;
for (int i = 0; i < elementsCount; i++)
{
    str = String.Concat(str, element + i, "=String.Empty", ",");
    if (i == elementsCount - 1)
        str = String.Concat(str, element + i, "=String.Empty");
}
string s = "new{" + str + "}";
var a=s;
string element=“element”;
string str=string.Empty;
for(int i=0;i

我想像ObservableCollection一样分配类“a”,但我不能这样做

有没有办法做到这两件事?? 但我想这不是正确的方式

试试看这里:

试试看这里:


动态创建类不是一个很有帮助的想法,因为您的其他代码都无法在编译时与它对话。这里的目的是什么?选项:

  • 使用
    字典
    返回按名称键入的数据
  • 在4.0中,使用
    ExpandoObject
    ,它既有字典又有
    dynamic
    API
  • 如果这是用于数据绑定,请实现
    ICustomTypeDescriptor
    ,并在运行时提供属性
例如:

    string element = "element";
    string str = String.Empty;
    int elementsCount = 20;
    IDictionary<string,object> obj = new ExpandoObject();
    for (int i = 0; i < elementsCount; i++)
    {
        obj[element + i] = "value " + i;
    }
    dynamic viaDynamic = obj;
    string val0 = viaDynamic.element0; // = "value 0"
string element=“element”;
string str=string.Empty;
int elementsCount=20;
IDictionary obj=新的ExpandooObject();
for(int i=0;i

但重要的是,它仍然有供静态使用的
IDictionary
API。

动态创建类并不是一个很有帮助的主意,因为您的其他代码都无法在编译时与它对话。这里的目的是什么?选项:

  • 使用
    字典
    返回按名称键入的数据
  • 在4.0中,使用
    ExpandoObject
    ,它既有字典又有
    dynamic
    API
  • 如果这是用于数据绑定,请实现
    ICustomTypeDescriptor
    ,并在运行时提供属性
例如:

    string element = "element";
    string str = String.Empty;
    int elementsCount = 20;
    IDictionary<string,object> obj = new ExpandoObject();
    for (int i = 0; i < elementsCount; i++)
    {
        obj[element + i] = "value " + i;
    }
    dynamic viaDynamic = obj;
    string val0 = viaDynamic.element0; // = "value 0"
string element=“element”;
string str=string.Empty;
int elementsCount=20;
IDictionary obj=新的ExpandooObject();
for(int i=0;i

但重要的是,它仍然有供静态使用的
IDictionary
API。

是否要装箱类(类型)或现有类型的实例

对于后者,请看System.Reflection和


如果您使用的是.net 4,那么您可以使用c#

中的DLR。是否要装箱类(类型)或现有类型的实例

对于后者,请看System.Reflection和


如果您使用的是.net 4,您可以从c#

使用DLR,您必须使用反射,这里有一个方便的教程:


你必须使用反射,这里有一个方便的教程:


哦,天哪,这让我想起了“我想在c#net中动态创建一个类。”不,你没有。除非你知道你在干什么。很明显,你不想“我想在c#.net中动态创建一个类。”不,你不想。除非你知道你在干什么。很明显,你没有。