Accord.Controls.Extensions.BindProperty C# (CSharp) Метод

BindProperty() приватный статический Метод

private static BindProperty ( object property, string propertyName, string format, IFormatProvider provider ) : string
property object
propertyName string
format string
provider IFormatProvider
Результат string
        private static string BindProperty(object property, string propertyName, string format, IFormatProvider provider)
        {
            string retValue = String.Empty;

            if (propertyName.Contains("."))
            {
                string leftPropertyName = propertyName.Substring(0, propertyName.IndexOf(".", StringComparison.Ordinal));
                PropertyInfo[] arrayProperties = property.GetType().GetProperties();

                foreach (PropertyInfo propertyInfo in arrayProperties)
                {
                    if (propertyInfo.Name == leftPropertyName)
                    {
                        retValue = BindProperty(propertyInfo.GetValue(property, null),
                            propertyName.Substring(propertyName.IndexOf(".", StringComparison.Ordinal) + 1),
                            format, provider);
                        break;
                    }
                }
            }
            else
            {
                Type propertyType;
                PropertyInfo propertyInfo;
                propertyType = property.GetType();
                propertyInfo = propertyType.GetProperty(propertyName);
                var obj = propertyInfo.GetValue(property, null);

                IFormattable fmt = obj as IFormattable;
                if (fmt != null)
                    retValue = fmt.ToString(format, provider);
                else
                    retValue = obj.ToString();
            }

            return retValue;
        }
    }