[英]return string when using the builder Pattern and Method chaining in C#
我想使用 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}";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.