1

我有一个 List 对象。在代码中,我要声明一个新的类,它的动态生成的属性都是从List对象中获取的。有没有办法我可以做到这一点?

例如:我有一个List<string> lstStr= "apple, pear, banana";并且我想在代码中生成一个新类:

Class Foo{
   string apple;
   string pear;
   string banana;
}
4

5 回答 5

0

你可以使用

public static List<Foo> GetFooList() { .... }

或从 List 对象扩展,但许多方法是虚拟的,因此您可能不会得到所有方法。

public class FooList:List<Foo> { .... //add more } 

并使用它

public static FooList GetFooList() { .... } 

链接: C# 泛型:List<Object> 或新类扩展 List <Object>

于 2012-09-05T23:45:15.083 回答
0

如果你真的需要一个类,那么这可能是你可以使用 codedom 做的事情 - 要么将字符串解析为类定义字符串并从那里生成,要么使用字符串列表在循环它们时创建属性。

这里有基础知识指南。

于 2012-09-05T23:01:12.710 回答
0

如果您使用的是 c# 4 或更高版本,您可以使用动态特别是 ExpandoObject 来执行此操作。

    var x = new ExpandoObject() as IDictionary<string, Object>;
foreach (var prop in lstStr)
{
     x.Add(prop, "");
}
于 2012-09-05T23:01:27.600 回答
0

我会使用另一个集合,例如Dictionary

Dictionary<String, String> Foo = lstStr
                           .Distinct()
                           .ToDictionary(f => f, f => default(String));
// now you can get/set the elements in the following way:
String banana = Foo["banana"];
Foo["apple"] = "some apple";
于 2012-09-05T22:56:28.910 回答
0

由于您在评论中说过您的最终目标是将数据绑定到 aDataGrid我建议您使用DataTable. 您可以创建一个空白板,添加列(任何原始类型),然后使用相同的列模式填充任意数量的行。此外,您可以轻松地将 ; 绑定DataTableDataGrid; 它们被设计为一起工作。

于 2012-09-06T00:56:44.980 回答