As a rule, you easily pass a property as a function, not as a string, i.e. change your signature to
public string GetValue<T>(Func<UserProfile, T> property)
(.NET naming conventions are what methods should be in the Pascal Case.) With this, you can call name = property(user).
PropertyInfo . , .