C# 如何从CommonLibrary.NET安全地使用GetPropertyValue?

C# 如何从CommonLibrary.NET安全地使用GetPropertyValue?,c#,dll,system.reflection,C#,Dll,System.reflection,使用时,如何正确使用getPropertyValueSafety()函数 我想这样做: public static string APP_TITLE = ComLib.ReflectionHelper.GetPropertyValueSafely(Application.ProductName); public static readonly string APP_TITLE = (string)ComLib.ReflectionHelper.GetPropertyValueSafely(ne

使用时,如何正确使用
getPropertyValueSafety()
函数

我想这样做:

public static string APP_TITLE = ComLib.ReflectionHelper.GetPropertyValueSafely(Application.ProductName);
public static readonly string APP_TITLE = (string)ComLib.ReflectionHelper.GetPropertyValueSafely(new object(), 
    ComLib.Reflection.ReflectionUtils.GetProperty(typeof(Application), "ProductName"));
但是我需要添加第二个参数,我还不太了解它的要求。以下是文档文件中的语法用法:

public static Object GetPropertyValueSafely(
    Object obj,
    PropertyInfo propInfo
)
这是参数要求:

参数obj类型:系统::…要检索其属性的对象

propInfo类型:System.Reflection::…PropertyInfo属性名称

那么我应该为
对象
添加什么呢?我也试过这个:

public static string APP_TITLE;
ComLib.ReflectionHelper.GetPropertyValueSafely(APP_TITLE, Application.ProductName);
但这也不是答案

我也试过:

public static string APP_TITLE = ComLib.Reflection.ReflectionUtils.GetPropertyValue((object)APP_TITLE, Application.ProductName).ToString();
…进行编译,但它从库中抛出运行时类型错误


谢谢你的帮助(我刚开始想这些东西)。

试试这样的方法:

public static string APP_TITLE = ComLib.ReflectionHelper.GetPropertyValueSafely(Application.ProductName);
public static readonly string APP_TITLE = (string)ComLib.ReflectionHelper.GetPropertyValueSafely(new object(), 
    ComLib.Reflection.ReflectionUtils.GetProperty(typeof(Application), "ProductName"));

NB:从技术上讲,将
new object()
传递给
PropertyInfo
GetValue
方法应该抛出
TargetException
。但是,由于这是一个静态属性,它似乎可以工作。

它在错误列表中给出了这一点:
error 1'System.Windows.Forms.Application'是一个“类型”,但被用作“变量”
@BGM:在这种情况下,因为
Application.ProductName
是一个静态属性,您应该将
null
作为第一个参数传递给
getPropertyValueSafety
方法。@BGM:如果
getPropertyValueSafety
方法中没有阻止它使用静态属性的错误,这将起作用。它说,
不能隐式地将类型对象转换为字符串,其中“miscast”是在第一个函数调用中,所以我在末尾添加了一个
toString()
,然后它在运行时因“System.TypeInitializationException”而崩溃,stacktrace说,“类型初始值设定项不能为null”@Ramhound-你能告诉我它是如何工作的吗?我花了一个多小时试图把它做好。