По мере получения данных, изменяю значение полей у элементов класса(List<'User1>).Возможно ли сделать метод, в который можно было бы передать какое именно поле необходимо изменять? Часть кода, в котором необходимо менять поле.
for (int i = 0; i < first.Count; i++)
{
foreach (var v in Test)
{
v.Name(<--это) += result[i] + " ";
i++;
}
Array.Clear(result, 0, 19);
}
Отдельно выше метода лежат GetValue и SetValue
Вот код метода в общем:
void fills(List<string> first, List<User1> Test, string fieldN)
{
string[] result = new string[20];
for (int i = 0; i < first.Count; i++)
{
foreach (var v in first)
{
result[i] += v + " ";
i++;
}
}
//for (int i = 0; i < result.Length; i++)
//{
// testbox.Text += result[i] + " ";
//}
for (int i = 0; i < first.Count; i++)
{
foreach (var v in Test)
{
SetValue(v, fieldN, Convert.ToString(GetValue(v, fieldN)) + result[i] + " ");
i++;
}
Array.Clear(result, 0, 19);
}
}
private object GetValue(object aParent, string aFieldName)
{
FieldInfo field = aParent.GetType().GetField(aFieldName);
if (field != null)
return field.GetValue(aParent);
PropertyInfo prop = aParent.GetType().GetProperty(aFieldName);
if (prop != null)
return prop.GetValue(aParent);
return null;
}
private void SetValue(object aParent, string aFieldName, object aValue)
{
FieldInfo field = aParent.GetType().GetField(aFieldName);
if (field != null)
field.SetValue(aParent, aValue);
PropertyInfo prop = aParent.GetType().GetProperty(aFieldName);
if (prop != null)
prop.SetValue(aParent, aValue);
}
SetValue(v, "Name", Convert.ToString(GetValue(v, "Name")) + result[i] + " ");
Возможно, вам подойдёт следующий подход:
using System;
using System.Collections.Generic;
namespace ConApp
{
class Program
{
static List<Person> people = new List<Person> {
new Person { Age = 20, Name = "Smit" },
new Person { Age = 30, Name = "John" } };
public static void Main(string[] args)
{
Print();
Do(p => p.Name += "!");
Print();
Do(p => p.Age += 1);
Print();
}
static void Do(Action<Person> act)
{
foreach (var p in people)
act(p);
}
static void Print()
{
foreach (var p in people)
Console.WriteLine(p.Age + " " + p.Name);
Console.WriteLine();
}
}
class Person
{
public int Age { get; set; }
public string Name { get; set; }
}
}
Метод Do
принимает Action<Person>
. При его вызове можно указать конкретное свойство, причём всё будет строго типизировано.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Коротко говоря пж помогите есть код который кидает информацию в БД знаю как сделать штобы с формы кидало но хотелось ето в классе чтобы не дублировать...