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