public DynamicComponentBaseFor(HtmlHelper <IEnumerable <TModel> > helper, Expression <Func <TModel, TProperty> > expression, object viewData = null, bool readOnly = false, bool disabled = false, bool visible = true)
        {
            TypedExpression = (Expression <Func <TModel, TProperty> >)(object) expression;

            var firstViewData = helper.ViewData.FirstOrDefault();

            Field     = (expression.Body as MemberExpression).Member;
            FieldName = ExpressionHelper.GetExpressionText(expression);
            FieldType = ((FieldInfo[])((TypeInfo)expression.Body.Type).DeclaredFields)[1].FieldType;
            //FieldValue = expression.Compile().Invoke(firstViewData);
            FieldFullName = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(FieldName);
            SanitizedId   = TagBuilder.CreateSanitizedId(FieldFullName);
            //FieldModelMetadata = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);

            //Obter Atributos Adicionados ao Metadata...
            //MetadataAttributes = new MetadataAttributes(FieldModelMetadata);

            RouteValueDictionary viewDataObj = HtmlHelper.AnonymousObjectToHtmlAttributes(viewData);

            HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(viewDataObj["htmlAttributes"]);
            HtmlAttributes = (RouteValueDictionary)helper.MergeHtmlAttributes(HtmlAttributes, viewDataObj);

            FieldIsNullable = HtmlHelpers.IsNullable(Field);
            FieldIsReadOnly = readOnly;
            FieldIsDisabled = disabled;
            FieldIsVisible  = visible;
        }