C# 在C中使用生成器模式和方法链接时返回字符串
我想使用Builder模式并通过方法链接使用它 这是我的班级: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(
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