internal DelegateColumnConfiguration(DelegateSettings delegateSettings, int ordinal, string columnName, object nullReplacement) : base(ordinal, nullReplacement)
        {
            this.DelegateSettings = delegateSettings;
            this._columnName      = columnName;

            ValidateInput();
        }
        public NonIdentityColumnConfiguration BuildColumnConfiguration <T, K>(Expression <Func <T, K> > func, ColumnConfigurationSettings <K> columnConfigurationSettings)
        {
            if (func.Body.NodeType == ExpressionType.MemberAccess)
            {
                var memberInfo       = ReflectionHelper.GetMemberInfoFromLambda(func);
                var fullPropertyPath = ReflectionHelper.GetMemberRelativePathNameFromLambda(func);
                return(new MemberColumnConfiguration(memberInfo, columnConfigurationSettings.Ordinal, columnConfigurationSettings.ColumnName, columnConfigurationSettings.NullReplacement, fullPropertyPath));
            }

            var delegateSettings = new DelegateSettings(func.Compile());

            return(new DelegateColumnConfiguration(delegateSettings, columnConfigurationSettings.Ordinal, columnConfigurationSettings.ColumnName, columnConfigurationSettings.NullReplacement));
        }