簡體   English   中英

在 C# 中使用構建器模式和方法鏈接時返回字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM