我有一个表客户,列[a1,a2,a3,... a10] 我需要通过数字来访问它们,例如设置a3,a4,a5值,使用数字代替它们的真实名称,如customer [4] = 1。 可能吗?
答案 0 :(得分:0)
查看此链接: Generic Field and SetField Methods (LINQ to DataSet)
编辑1:
您提供的信息有限
此代码可以帮助您
public class Customer
{
public int ID { get; set; }
public string Name { get; set; }
}
从反思开始(注意,这很慢 - 虽然适用于适量的数据):
var customer = new Customer();
var props = customer.GetType().GetProperties();
props[0].SetValue(customer, 1);
props[1].SetValue(customer, "hamix");
Console.WriteLine(props[0].GetValue(customer));
Console.WriteLine(props[1].GetValue(customer));
答案 1 :(得分:0)
您可以通过indexed property:
执行此操作class Customer
{
private static PropertyInfo[] _propertyInfos
= typeof(Customer).GetProperties()
.Where (x => x.Name.StartsWith("A")).ToArray();
public int A1 { get; set; }
public int A2 { get; set; }
public int A3 { get; set; }
public int this[int index]
{
get
{
return (int)(_propertyInfos[index - 1].GetValue(this) ?? 0);
}
set
{
_propertyInfos[index - 1].SetValue(this, value);
}
}
}
(省略_propertyInfos
数组的边界检查)
然而,我怀疑你是否应该走这条路。设计闻起来很糟糕。