1) I would say you'll have to convert strings to the enum or date or TimeSpan using the appropriate parse or Convert methods.
2) Reflection (Type.GetProperty) and recursion (get type of property and recurse if a class).
2) Reflection (Type.GetProperty) and recursion (get type of property and recurse if a class).