我在datagridview中有12列(他们从v1到v12的12个属性)。是否有可能创建一个像这样的动态系统:
int i = 5;
var variablename = "v" + i;
String content = product.variablename;
这将是
的通用功能if(i == 5) {
content = product.v5
}
是的,我知道命名我的属性v1-v12并不是一种好习惯,但它有其用途。我可以写12条条款,但我只是想知道它是否可能。
编辑:
在具体示例中,我有一个包含每个v1-v12属性的8000个产品的数组。我想动态获取特定单元格的值,所以 产品[row]。(v + column)应该成为产品[23] .v5。
这是一个案例,而不是实际需要,只是想知道是否可以完成。
答案 0 :(得分:5)
字典将为您提供灵活性和控制权,可以存储任意数量的内容并在不使用反射等的情况下检索它们。
var values = new Dictionary<string, string>();
values.Add("v" + i, "somevalue");
并检索它:
var storedValue = values["v" + i];
另外,如果您使用数据网格视图有多行。您还可以使用DataTable存储信息。或者,如果您有一个固定的结构,为什么不创建一个代表该信息的类并使用List<T>
答案 1 :(得分:1)
var variablename = "v" + i;
MethodInfo method = product.GetType().GetMethod(variablename);
object result = method.Invoke(product, new object[] {}); // pass in the parameters if you need to
您可以将反射用于此目的
答案 2 :(得分:0)
所以你有一个类产品有12个属性没有有用的名字? 在这种情况下,我只会创建一个具有属性数组的类Product。
public class Product
{
public string[] Properties {get;set;}
}
然后访问您调用的产品23的5t通用无名属性。
products[23].Properties[5]
虽然我仍然怀疑产品属性无法正确命名。