簡體   English   中英

使用 System.Reflection 打印所有 System.Environment 信息

[英]print all System.Environment information using System.Reflection

我們有一個小任務要在控制台窗口中使用reflection打印Environment類的所有變量,但如何做到這一點我什至不知道。 如果我在這里寫錯了,我很抱歉,我是C#新手。

當然我可以使用這種代碼,但這不是我需要的。

string machineName = System.Environment.MachineName;
Console.WriteLine(machineName);

我在谷歌上搜索了很多,這就是我找到的,但我認為這不是我需要的。 我什至不知道我需要什么。

System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);

有什么建議,線索嗎?

你不需要在這里反思

foreach(DictionaryEntry e in System.Environment.GetEnvironmentVariables())
{
    Console.WriteLine(e.Key  + ":" + e.Value);
}

var compName = System.Environment.GetEnvironmentVariables()["COMPUTERNAME"];

使用GetProperties方法獲取Environment的所有公共靜態屬性,然后顯示每個屬性的名稱和值:

var properties = typeof(Environment)
                .GetProperties(BindingFlags.Public | BindingFlags.Static);

foreach(var prop in properties)
   Console.WriteLine("{0} : {1}", prop.Name, prop.GetValue(null));

雖然這是一個老問題,但使用 Linq,根據接受的答案有一個更簡潔的可能答案:

IEnumerable<string> environmentVariables = Environment.GetEnvironmentVariables()
   .Cast<DictionaryEntry>()
   .Select(de => $"{de.Key}={de.Value}");

Console.WriteLine("Environment Variables: " + string.Join(Environment.NewLine, environmentVariables));

或者,相同代碼的較短版本:

Console.WriteLine("Environment Variables: " + string.Join(Environment.NewLine, 
    Environment.GetEnvironmentVariables()
       .Cast<DictionaryEntry>()
       .Select(de => $"{de.Key}={de.Value}")));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM