在我的代碼中我有3個部分,但在3個部分中的2個代碼幾乎完全相同,我想知道是否有人可以幫助我正確地構造它們,以便我只需要一行寫入一行,在一個範圍內,以便它可以被兩個部分看到,所以我不需要有太多的代碼。 (框架3.5)C# - 範圍混亂
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到LINQ部分的代碼的底部到它自己的部分。但要做到這一點我必須有全科RealDriveInfo
太..
,我要做的就是讓List<DriveInfo> driveList = DriveInfo.GetDrives().Where(x=>x.IsReady).ToList<DriveInfo>();
,以便它可以通過FakeDriveInfo和RealDriveInfo可以看到另一部分..
任何反饋會非常感謝,謝謝。
編輯:此刻我打電話給兩個方法, FakeDriveInfo(); =執行控制檯應用程序並向我顯示它要提交的信息。 名稱,字母,標籤,服務器名稱,ID等 RealDriveInfo(); =連接到SQL Server並將信息插入到兩個表中。
我想要第三種方法 WriteInToDB(); =數據庫寫入代碼將從RealDriveInfo方法獲取並移至此處。
目前我有兩種方法,實際上看起來是相同的,由於範圍。 我希望移動的範圍,以便我可以將代碼的列表部分放入Main()方法中,FakeDriveInfo和RealDriveInfo都可以使用它,而不是代碼重複。
希望這增加了更多的意義,這一切:)
如果它沒有損壞,不要修復它。 – 2012-08-07 13:06:20
你的代碼對我來說似乎很好。不要過分強調這樣的事情。 – Filip 2012-08-07 13:08:45
FakeDriveInfo內的'serverDrives'有什麼意義?我不同意上面的兩條評論。 – JonH 2012-08-07 13:12:36