Можно конечно. Количество значений должно идти подряд и соответствовать числу свойств в классе.
var data = "0, 1.1, 1.2, 1.3, name, true";
var myClass = MyClass.Parse(data);
MyClass.SeeChanges(myClass);
public class MyClass
{
private int Id { get; set; }
private double X { get; set; }
private double Y { get; set; }
private double Z { get; set; }
private string Name { get; set; }
private bool Active { get; set; }
public static MyClass Parse(string data)
{
var myClass = new MyClass();
var properties = data.Split(',');
var props = myClass.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Public
| BindingFlags.Instance | BindingFlags.Static);
for (int i = 0; i < props.Length; i++)
{
var prop = props[i];
var type = prop.PropertyType;
prop.SetValue(myClass, Convert.ChangeType(properties[i], type, CultureInfo.InvariantCulture));
}
return myClass;
}
public static void SeeChanges(MyClass myClass)
{
var props = myClass.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Public
| BindingFlags.Instance | BindingFlags.Static);
foreach (var prop in props)
{
Debug.WriteLine("{0} = {1}", prop.Name, prop.GetValue(myClass, null));
}
}
}