在控制台应用程序C#的对象中保存值

时间:2016-11-29 18:34:44

标签: c# oop console-application session-variables

我正在编写一个应用程序,我从数据库中获取数据并将其传递给对象,该对象稍后将用于将数据发送到其他位置。我在测试中遇到的问题是数据不能保存在对象中,就像以后使用时一样,我得到空值错误。我知道我们可以将它们存储在会话中,但我也知道你可以使用对象并在以前的工作之前完成它,但是不记得我缺少什么来维护信息。我是否需要将对象从方法传递给方法直到作业完成?

此处的第一个示例显示了准备对象的位置。

 public void FtpInitialize()
    {
        _LogController.LogToFile(ValidateMessage.BeginInitialization);

        //Loading FTPClient object with ClientInfo Object data we got from DataBase.  FTPClient object is the object that sends the data.
        _LogController.FTPTraceLogToFile();
        ClientInfo = _RepositoryController.GetClientInfo(ClientInfo);
        if (ClientInfo == null)
            ClientInfo.ClientDataExists = false;
        else
        {
            FTPClient.Host = ClientInfo.Host;
            FTPClient.Port = ClientInfo.Port;
            FTPClient.EncryptionMode = FtpEncryptionMode.Explicit;
            FTPClient.Credentials = new NetworkCredential(ClientInfo.UserName, ClientInfo.Password);
            FTPClient.DataConnectionType = FtpDataConnectionType.EPSV; //according library documentation, auto passive is broken as of 10/20/2016
            FTPClient.EnableThreadSafeDataConnections = ClientInfo.EnableThreadSafeConnection;
            FTPClient.DataConnectionConnectTimeout = ClientInfo.DataConnectionTimeout;
            FTPClient.DataConnectionReadTimeout = ClientInfo.DataReadTimeout;
            FTPClient.ConnectTimeout = ClientInfo.ConnectionTimeout;
            FTPClient.ReadTimeout = ClientInfo.ReadTimeout;
            FTPClient.SocketPollInterval = ClientInfo.SocketPollInterval;
            FTPClient.SocketKeepAlive = ClientInfo.KeepSocketAlive;
            FTPClient.ValidateCertificate += new FtpSslValidation(OnValidateCertificate);

            _LogController.LogToFile(ValidateMessage.ClientDataLoaded);
            ClientInfo.ClientDataExists = true;
        }
    }

然后在我点击此部分时,它显示为null

 public bool SendData()
    {
        short errorCount = 0;
        using (FTPClient)
        {
            if (ClientInfo.ClientDataExists)
            {

1 个答案:

答案 0 :(得分:0)

这看起来就像是在方法中使用局部变量。这就是数据“消失”的原因。

例如,如果要从数据库中提取数据,则应该使用某种模型类和容器,以便数据可以持续存在,直到完成为止。

EX:您有一个包含人员信息的数据库(名称,dob等)。

你应该有一个定义人的类,可能还有一个List来存储所述人。您调用数据库并将X person对象拉入List变量。然后,您可以将List传递给方法。注意:如果你一次只做一个,你可以抛弃List(或你使用的任何集合)。

这的实现实际上取决于您希望对象如何持久化。如果您知道一次只能拉一个人对象,则可以从数据库中声明var databasePerson。如果您要提取更多信息,请使用列表,然后在关闭对象时弹出对象。

希望有所帮助。