using System.Reflection; ... public static string GetPropertyValue(this T @this, string propertyToRead) where T : class { string propertyValue = string.Empty; var sourceType = @this.GetType(); var binding = BindingFlags.Public | BindingFlags.Instance; if (propertyToRead.Contains(".")) { var property = sourceType.GetProperty( propertyToRead.Split('.').First(), binding | BindingFlags.GetProperty); var value = property.GetValue(@this, null); propertyValue = value.GetPropertyValue(String.Join(".", propertyToRead.Split('.').Skip(1).ToArray())); } else { propertyValue = Convert.ToString(@this.GetType().GetProperty(propertyToRead).GetValue(@this, null)); } return propertyValue; }