Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中使用生成器模式和方法链接时返回字符串_C#_Design Patterns - Fatal编程技术网

C# 在C中使用生成器模式和方法链接时返回字符串

C# 在C中使用生成器模式和方法链接时返回字符串,c#,design-patterns,C#,Design Patterns,我想使用Builder模式并通过方法链接使用它 这是我的班级: public class SQLGenerator : ISQLGenerator { private readonly SQLGeneratorModel generatorModel; public SQLGenerator() { generatorModel = new SQLGeneratorModel(); } public ISQLGenerator From(

我想使用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


如何显示字符串结果?

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

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

    }

将var str更改为string str,您将看到问题是的,我知道我的问题是如何将SqlPagingGenerator.Pattern.SqlGenerator转换为string???如果要使用生成器模式,您应该使用Build方法,并在最后调用它,以获得案例中的结果字符串,而不是ISQLGenerator