私のコードには 3 つのセクションがありますが、3 つのセクションのうち 2 つのコードはほとんど同じです。両方のセクションで表示されるので、それほど多くのコードは必要ありません。(フレームワーク 3.5)
public static void FakeDriveInfo()
{
List<DriveInfo> driveList = DriveInfo.GetDrives().Where(x => x.IsReady).ToList<DriveInfo>();
Server server = new Server();
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Server ID : {0}", server.ServerID = 0);
Console.WriteLine("Server Name : {0}", server.ServerName = string.Concat(System.Environment.MachineName));
Console.WriteLine();
for (int i = 0; i < driveList.Count; i++)
{
ServerDrive serverDrives = new ServerDrive();
Console.WriteLine("Drive Letter: {0}", driveList[i].Name);
Console.WriteLine("Total Size: {0}", FormatBytes(driveList[i].TotalSize));
Console.WriteLine("Volume Label: {0}", driveList[i].VolumeLabel);
Console.WriteLine("Free Space: {0}", FormatBytes(driveList[i].TotalFreeSpace));
Console.WriteLine("Drive Format: {0}", driveList[i].DriveFormat);
Console.ReadLine();
}
}
public static void RealDriveInfo()
{
//Create the server object - You will need create a list of the server objects.
Server server = new Server();
//Get all drives information
List<DriveInfo> driveList = DriveInfo.GetDrives().Where(x => x.IsReady).ToList<DriveInfo>();
//Insert information of one server - You will need get information of all servers
server.ServerID = 0; //Here is necessery put PK key. I recommend doing the SQL server will automatically generate the PK.
server.ServerName = string.Concat(System.Environment.MachineName);
//Inserts information in the newServers object
for (int i = 0; i < driveList.Count; i++)
{
ServerDrive serverDrives = new ServerDrive();
//Put here all the information to obeject Server
serverDrives.DriveLetter = driveList[i].Name;
serverDrives.TotalSpace = driveList[i].TotalSize;
serverDrives.DriveLabel = driveList[i].VolumeLabel;
serverDrives.FreeSpace = driveList[i].TotalFreeSpace;
serverDrives.DriveType = driveList[i].DriveFormat;
// server.ListServerDrives.Add(serverDrives);
server.ServerDrives.Add(serverDrives);
}
//Add the information to an SQL Database using Linq.
DataClasses1DataContext db = new DataClasses1DataContext(@"sqlserver");
// db.Servers.InsertAllOnSubmit(server);
db.Servers.InsertOnSubmit(server);
db.SubmitChanges();
}
私がやりたいことは、コードの下部にある SQL to Linq 部分を独自のセクションに移動することです。しかし、それを行うには、RealDriveInfo
セクション全体も必要です..
私がやりたいもう 1 つの部分はList<DriveInfo> driveList = DriveInfo.GetDrives().Where(x=>x.IsReady).ToList<DriveInfo>();
、FakeDriveInfo と RealDriveInfo で見られるようにすることです。
どんなフィードバックでも大歓迎です、ありがとう。
編集: 現時点では、FakeDriveInfo(); の 2 つのメソッドを呼び出しています。= コンソール アプリを実行し、送信する情報を表示します。名前、文字、ラベル、サーバー名、ID など。= SQL Server に接続し、2 つのテーブルに情報を挿入します。
3 つ目のメソッド WriteInToDB(); が必要です。= DB 書き込みコードは RealDriveInfo メソッドから取得され、代わりにここに移動されます。
現時点では、スコープのために実質的に同一に見える 2 つのメソッドがあります。コードの List 部分を Main() メソッドに配置できるようにスコープをシフトし、FakeDriveInfo と RealDriveInfo の両方がコードを複製する代わりにそこから使用できるようにします。
うまくいけば、これはすべてにもう少し意味を追加します:)