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-你能告诉我它是如何工作的吗?我花了一个多小时试图把它做好。