我有一個屬性爲ct1-ct5的對象。該對象是一個自動生成的linq-to-sql對象。我想在c#中爲這些屬性賦值。有沒有辦法在for循環中做到這一點?動態地爲對象屬性賦值
例如像(對象名稱:new_condition):
for (int i = 1; tag <= 5; i++)
{
new_condition.cti = values[i];
}
其中CTI的i
獲取評估。
在此先感謝
我有一個屬性爲ct1-ct5的對象。該對象是一個自動生成的linq-to-sql對象。我想在c#中爲這些屬性賦值。有沒有辦法在for循環中做到這一點?動態地爲對象屬性賦值
例如像(對象名稱:new_condition):
for (int i = 1; tag <= 5; i++)
{
new_condition.cti = values[i];
}
其中CTI的i
獲取評估。
在此先感謝
您可以使用反射。例如,supose你有一個類A
這樣的:
class A
{
public int P1 { get; set; }
public int P2 { get; set; }
public int P3 { get; set; }
}
你可以不喜歡這樣簡單的控制檯樣品中:
static void Main(string[] args)
{
var a = new A();
foreach (var i in Enumerable.Range(1,3))
{
a.GetType().GetProperty("P" + i).SetValue(a, i, null);
}
Console.WriteLine("P1 = {0}",a.P1);
Console.WriteLine("P2 = {0}",a.P2);
Console.WriteLine("P3 = {0}",a.P3);
Console.ReadLine();
}
輸出將是:
P1 = 1
P2 = 2
P3 = 3
旁邊如已經建議的那樣反射,您可以創建一個Dictionary<string,Action<T>>
,爲您完成分配任務。類似這樣的:
public static int a0;
public static int a1;
public static int a2;
public static Dictionary<string, Action<int>> actions = new Dictionary<string, Action<int>> {
{"a0", val => a0 = val}, {"a1", val => a1 = val}, {"a2", val => a2 = val }};
static void Main(string[] args)
{
for (int i = 0; i < 3; i++)
actions["a" + i](i * 2);
Console.WriteLine(a0);
Console.WriteLine(a1);
Console.WriteLine(a2);
}
只能通過反射,恐怕 – lesscode 2014-09-21 02:56:40