Используя рефлексию, я заполняю комбинированный список типами классов, затем создаю текстовые поля для ввода на основе открытых свойств каждого класса.
Учитывая, что у каждого класса есть свойства, которые возвращают разные типы (string, float, int), как я могу проверить каждый тип, передать их из текстового поля для создания экземпляров класса, которые передаются в список? Каждое текстовое поле должно иметь разные типы.
Основная цель - отправить эти экземпляры в список.
Я изучаю рефлексию и linq, поэтому я хочу сделать это, используя их.
Я пытался использовать этот словарь, но не могу использовать его для обработки нескольких типов свойств.
private void OnButton1Click(object sender, EventArgs e)
{
Dictionary<string, string> populatedProperties = Controls.OfType<TextBox>()
.ToDictionary(x => x.Name, x => ValidateInputType(x.Text));
User createdUser = (User)Activator.CreateInstance(selectedType);
foreach (PropertyInfo property in selectedType.GetProperties().Where(x => x.CanWrite))
{
property.SetValue(createdUser, populatedProperties[property.Name]);
}
listBoxUsers.Items.Add(createdUser.ToString());
}
// Я создаю текстовые поля, используя:
int i = 50;
foreach (var prop in selectedUserType.GetProperties().Where(x => x.CanWrite))
{
Controls.Add( new TextBox
{
Name = prop.Name,
Location = new Point(150, 10 + i),
Tag = prop
});
i = i + 40;
}
// И проверяем:
private string ValidateInputType(string input)
{
if (string.IsNullOrWhiteSpace(input))
return "Input is null or White Space";
}
Я ожидаю, что смогу передать эти различные свойства в listBox.