温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - return string when using the builder Pattern and Method chaining in C#
c# design-patterns

其他 - 在C#中使用构建器模式和方法链接时返回字符串

发布于 2020-03-27 15:50:59

我想使用Builder模式,并通过方法链接使用它。

这是我的课:

public class SQLGenerator : ISQLGenerator
{
    private readonly SQLGeneratorModel generatorModel;
    public SQLGenerator()
    {
        generatorModel = new SQLGeneratorModel();
    }

    public ISQLGenerator From(string TableName)
    {
        generatorModel.TabelName = string.Format("FROM {0}", TableName);
        return this;
    }

    public ISQLGenerator Select(List<string> SelectItems)
    {
        StringBuilder select = new StringBuilder();
        var lastItem = SelectItems.Last();
        foreach (var item in SelectItems)
        {
            if (!item.Equals(lastItem))
            {
                select.Append(item).Append(" , ");
            }
            else
            {
                select.Append(item);
            }
        }
        generatorModel.Select =string.Format("SELECT {0}", select.ToString());
        return this;
    }

这是使用此类的方式:

SQLGenerator generator = new SQLGenerator();
List<string> select = new List<string>();
select.Add("id");
select.Add("Name");
var str = generator.Select(select).From("AppUsers");
Console.WriteLine(str);

现在,我希望这样返回一个字符串:SELECT ID , NAME FROM APPUSER但是它在控制台中向我显示了此结果:

SqlPagingGenerator.Pattern.SQLGenerator

如何显示字符串结果?

查看更多

查看更多

提问者
kia kia
被浏览
63
Ndubuisi Jr 2020-01-31 16:28

错误的原因是您从方法中返回的对象不是字符串。您要做的就是重写ToString方法以返回所需的字符串。

    public class SQLGenerator : ISQLGenerator
    {
        ....
        public override string ToString()
        {
           return  $"{generatorModel.TableName} {generatorModel.Select}";
        }

    }