我不能让我的静态类使用通用列表

时间:2015-05-15 12:25:17

标签: asp.net

我有一个静态类,需要将一个泛型字符串List传递给一个函数,使用整数作为类中List的索引。问题是静态类没有List收集,并且我没有适当的索引来访问传递给它的函数中的类。类,调用代码和接收函数如下。

我的班级:

public class QueryContainer
{
    public static QueryContainer Instance = new QueryContainer();
    private int _id;
    private string _query = "";
    private int _searchID;

    public QueryContainer() { }

    public string Query
    {
        get
        {
            if (Instance != null)
                return Instance._query;
            else
                return "";
        }
        set { _query = value; _id =+ 1; }
    }

    public int ID { get { return _id; } }

    public int SearchID
    {
        set { _searchID = value; }
        get { return _searchID; }
    }        
}

主叫代码:

public int GetAccountSortByAccountCode(int account)
{
    int Id = 0;
    QueryContainer.Instance.Query = "SELECT ac_sort_order FROM lkup_account_codes where ac_code = " + account.ToString();
    return Convert.ToInt32(ExecuteScaler(Id));
}

将静态类传递给的函数:

public int GetAccountSortByAccountCode(int account)
{
    int Id = 0;
    QueryContainer.Instance.Query = "SELECT ac_sort_order FROM lkup_account_codes where ac_code = " + account.ToString();
    return Convert.ToInt32(ExecuteScaler(Id));
}

功能

    protected Object ExecuteScaler(int ID)
    {
        object returnValue = null;

        if (!_iserror)
        {
            if (_trace)
            { DoTrace("TAMIS.Data.Loader.ExecuteScalar", QueryContainer.Instance.Query); }

            if (_connection == null || _connection.State == ConnectionState.Closed)
            {
                OpenConnection();
            }

            DbCommand command = _provider.CreateCommand();
            command.Connection = _connection;
            {
                command.CommandText = QueryContainer.Instance.Query;
                command.CommandType = CommandType.Text;
                if (_useTransaction) { command.Transaction = _transaction; }

                try
                {
                    returnValue = command.ExecuteScalar();
                }
                catch (Exception ex)
                {
                    if (ex is EntryPointNotFoundException)
                        throw ex;
                    //if (_useTransaction == true)
                    //_transaction.Rollback();
                    RollBack();

                    LogBLL bll = new LogBLL();
                    bll.WriteErrorLog(ex);

                    _iserror = true;
                }
                finally
                {
                    if ((!KeepAlive && _connection.State == ConnectionState.Open) || _iserror == true)
                    {
                        CloseConnection();
                    }
                }
            }
        }
        else
        {
            returnValue = -1;
        }
        return returnValue;
    }

1 个答案:

答案 0 :(得分:1)

您正在使用QueryContainer作为Singleton

在ASP.Net中,您收到来自不同用户的多个请求。这不是构建动态查询的好方法。

基本上,您所做的是所有请求都将使用相同的QueryContainer实例。我不认为这是你想要的。

底线是你的场景中不使用静态。