我目前正在从头学习C#,我偶然发现了一个难以理解的主题。我想在控制台中打印出有关系统的信息。我读到了Troelson中的反思,并决定尝试一下,所以我用Google搜索并找到了一个针对此问题设计的Windows窗体项目。我尝试制作一个类似的控制台应用程序但是当我尝试打印时,我会在部件上得到一个未处理的异常。关于如何使这项工作或解释我做错了什么(我当然有)的任何提示都会非常有帮助。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
namespace MachineInfo
{
class Program
{
static void Main(string[] args)
{
Type propertytype = typeof(System.Windows.Forms.SystemInformation);
PropertyInfo[] property = propertytype.GetProperties();
string str;
for(int i=0; i<property.Length; i++ )
{
str = property[i].ToString();
Type prop = typeof(System.Windows.Forms.SystemInformation);
PropertyInfo innerproperty = prop.GetProperty(str);
Console.WriteLine(innerproperty.ToString());
}
}
}
}
答案 0 :(得分:1)
你只需要:
for(int i=0; i<property.Length; i++ )
{
Console.WriteLine("{0} : {1}",
property[i].Name,
property[i].GetValue(null).ToString());
}
property[i].ToString();
返回类型名称PropertyInfo
,并且您尝试获取名为PropertyInfo
的属性,该属性不存在。
此外,如果您想获取静态属性,请不要忘记指定BindingFlags
var flags = BindingFlags.Public | BindingFlags.Static;
PropertyInfo[] property = propertytype.GetProperties(flags);