点击或拖拽改变大小

SoftFileSaveBase 类

文件存储功能的基类,包含了文件存储路径,存储方法等
继承层次

命名空间:  HslCommunication.BasicFramework
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:12.0.0.0 (12.0.0.0)
语法
public class SoftFileSaveBase : ISoftFileSaveBase

SoftFileSaveBase 类型公开以下成员。

构造函数
  名称说明
公共方法SoftFileSaveBase
实例化一个文件存储的基类
Top
属性
  名称说明
公共属性FileSavePath
文件存储的路径
公共属性ILogNet
日志记录类
受保护的属性LogHeaderText
在日志保存时的标记当前调用类的信息
Top
方法
  名称说明
公共方法Equals (继承自 Object。)
受保护的方法Finalize (继承自 Object。)
公共方法GetHashCode (继承自 Object。)
公共方法GetType (继承自 Object。)
公共方法LoadByFile
不使用解密方法从文件读取数据
公共方法LoadByFile(ConverterString, String)
使用用户自定义的解密方法从文件读取数据
公共方法LoadByString
从字符串加载数据,需要重写实现
受保护的方法MemberwiseClone (继承自 Object。)
公共方法SaveToFile
不使用加密方法保存数据到文件
公共方法SaveToFile(ConverterString, String)
使用用户自定义的加密方法保存数据到文件
公共方法ToSaveString
获取需要保存的数据,需要重写实现
公共方法ToString (继承自 Object。)
Top
扩展方法
  名称说明
公共扩展器方法ToJsonString
获取当前对象的JSON格式表示的字符串。
Gets the string represented by the JSON format of the current object.
(由 HslExtension 定义。)
Top
备注
需要继承才能实现你想存储的数据,比较经典的例子就是存储你的应用程序的配置信息,通常的格式就是xml文件或是json文件。具体请看例子:
示例
下面举例实现两个字段的普通数据存储
简单示例
// 要想使用该类进行一些数据的存储,必须继承实现下面的方法。


/// <summary>
/// 这是一个软件的配置信息存储功能的示例,假设我要存储两个数据,服务器的ip地址和端口号,一个string,一个int
/// </summary>
public class SoftSettings : HslCommunication.BasicFramework.SoftFileSaveBase
{
    /// <summary>
    /// 必须重写这个方法,返回的数据就真正保存到txt的数据
    /// </summary>
    /// <returns>字符串信息</returns>
    public override string ToSaveString( )
    {
        // 此处举例采用xml格式存储
        System.Xml.Linq.XElement element = new System.Xml.Linq.XElement( "Settings" );

        element.Add( new System.Xml.Linq.XElement( nameof( IpAddress ), IpAddress ) );
        element.Add( new System.Xml.Linq.XElement( nameof( Port ), Port.ToString() ) );

        return element.ToString( );
    }

    /// <summary>
    /// 必须重写这个方法,这个方法里应当包含怎么解析文件的数据
    /// </summary>
    /// <param name="content"></param>
    public override void LoadByString( string content )
    {
        // 上面的存储是使用xml的方式的,所以此处解析也要对照
        System.Xml.Linq.XElement element = System.Xml.Linq.XElement.Parse( content );

        IpAddress = element.Element( nameof( IpAddress ) ).Value;
        Port = int.Parse(element.Element( nameof( Port ) ).Value);
    }



    // 这里就是我们实际需要存储和解析的属性了

    /// <summary>
    /// IP地址数据
    /// </summary>
    public string IpAddress { get; set; }
    /// <summary>
    /// 端口数据
    /// </summary>
    public int Port { get; set; }
}
然后怎么调用呢?
调用示例
// 初始化,需要加载一次数据
SoftSettings softSettings = new SoftSettings( );
softSettings.FileSavePath = "settings.txt";
softSettings.LoadByFile( );


// 当你修改了属性的数据后,就需要调用保存一次,才会保存成功
softSettings.IpAddress = "192.168.0.100";
softSettings.Port = 1000;
softSettings.SaveToFile( );
如果你想实现加密存储,这样就不用关心被用户看到了。
加密示例
/// <summary>
/// 这是一个软件的配置信息存储功能的示例,假设我要存储两个数据,服务器的ip地址和端口号,一个string,一个int,存储效果为加密
/// </summary>
public class SoftSettings2 : HslCommunication.BasicFramework.SoftFileSaveBase
{
    /// <summary>
    /// 必须重写这个方法,返回的数据就真正保存到txt的数据
    /// </summary>
    /// <returns>字符串信息</returns>
    public override string ToSaveString( )
    {
        // 此处举例采用xml格式存储
        System.Xml.Linq.XElement element = new System.Xml.Linq.XElement( "Settings" );

        element.Add( new System.Xml.Linq.XElement( nameof( IpAddress ), IpAddress ) );
        element.Add( new System.Xml.Linq.XElement( nameof( Port ), Port.ToString( ) ) );

        return element.ToString( );
    }

    /// <summary>
    /// 必须重写这个方法,这个方法里应当包含怎么解析文件的数据
    /// </summary>
    /// <param name="content"></param>
    public override void LoadByString( string content )
    {
        // 上面的存储是使用xml的方式的,所以此处解析也要对照
        System.Xml.Linq.XElement element = System.Xml.Linq.XElement.Parse( content );

        IpAddress = element.Element( nameof( IpAddress ) ).Value;
        Port = int.Parse( element.Element( nameof( Port ) ).Value );
    }


    public override void SaveToFile( )
    {
        // 采用了des加密存储了数据
        base.SaveToFile( m => HslCommunication.BasicFramework.SoftSecurity.MD5Encrypt( m, "12345678" ) );
    }

    public override void LoadByFile( )
    {
        // 采用了des加密解密了数据
        base.LoadByFile( m => HslCommunication.BasicFramework.SoftSecurity.MD5Decrypt( m, "12345678" ) );
    }

    // 这里就是我们实际需要存储和解析的属性了

    /// <summary>
    /// IP地址数据
    /// </summary>
    public string IpAddress { get; set; }
    /// <summary>
    /// 端口数据
    /// </summary>
    public int Port { get; set; }
}
如果还是担心被反编译获取数据,那么这个密钥就要来自服务器的数据,本地不做存储。
参见