正如你可以从标题中理解的那样,我修改了Settings.cs文件。添加了一些属性,一些代码到了约束器(公共设置())和覆盖了Save()函数。但它是一个空间类,所以我知道什么样的修改IDE生成的文件时必须面对的后果,特别是.designers.It不是设计师,而是IDE生成内部密封部分,我想知道它是否100%安全?
internal sealed partial class Settings
{
public System.Data.SqlClient.SqlConnection AppDbConnection
{
get
{
if (_AppDbConnection == null)
{
try
{
_AppDbConnection = new System.Data.SqlClient.SqlConnection(_ConnectionString);
_AppDbConnection.Open();
}
catch (System.Exception ex) { throw ex; }
}
return _AppDbConnection;
}
}
private System.Data.SqlClient.SqlConnection _AppDbConnection;
private string _ConnectionString;
public override void Save()
{
System.IO.FileInfo fi = new System.IO.FileInfo(System.Windows.Forms.Application.StartupPath + "\\Settings.dat");
System.IO.FileStream fs = new System.IO.FileStream(fi.FullName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding("iso-8859-9"));
try { sw.Write(Helper.BinarySerializer.ToBinary(_SettingsBase)); }
catch (System.Exception ex) { throw ex; }
finally { sw.Close(); fs.Close(); }
base.Save();
}
public Settings()
{
try
{
System.IO.FileInfo fi = new System.IO.FileInfo(System.Windows.Forms.Application.StartupPath + "\\Settings.dat");
if (fi.Exists)
{
System.IO.FileStream fs = new System.IO.FileStream(fi.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.StreamReader sr = new System.IO.StreamReader(fs, System.Text.Encoding.GetEncoding("iso-8859-9"));
string data = sr.ReadToEnd();
if (data != "")
{
_SettingsBase = (AppCode.SettingsBase)Helper.BinarySerializer.BinaryTo(data);
_ConnectionString = Helper.Crypto.DecryptString(_SettingsBase.ConnectionString, "");
}
答案 0 :(得分:1)
如果您的添加内容位于某个代码生成工具不的单独文件中,则IDE不会覆盖您的更改(只是不要命名)它以* .designer.cs结尾,以防万一) 因此,至少从IDE的代码生成中是安全的。
不编辑visual studio生成的文件(这些文件通常在顶部有注释警告您)。
这样的自动生成的文件是将类声明为部分的主要原因之一,因此您可以将其扩展到另一个文件中,而不必担心您的更改会被覆盖。
注意:虽然
,但该连接字符串中的任何敏感数据都不安全答案 1 :(得分:0)
知道它是否100%安全?
100%不安全。设计师更改=文件丢弃。
制作另一个文件,部分,在那里添加你的代码。此文件中的任何代码更改都不安全且会丢失。
意外等待发生。