我正在使用反射来获取对象的属性,并且没有任何困难,但我需要使我的类更通用,所以基本上我要做的是以下内容:
PropertyInfo[] properties = (typeof ("ObjectName")).GetProperties(BindingFlags.Public | BindingFlags.Instance);
或类似的东西。注意在typeof中使用字符串。我知道这不起作用,这只是为了表明我想要完成的事情。我也试过了:
public void Test(object myObject)
{
typeof(myObject.GetType());
Type myType = myObject.GetType();
typeof(myType);
}
没有成功。
答案 0 :(得分:3)
听起来您可能需要Type.GetType
或Assembly.GetType
。前者的一个警告 - 除非类型在调用程序集或mscorlib中,您需要提供程序集名称和类型名称 - 请参阅this question from earlier today以获取示例。
或者,在您的示例代码中,您已经myObject.GetType()
- 这不是真正做您想要的一切吗?目前还不清楚完全你想要在这里实现的目标。
答案 1 :(得分:1)
如果您只想获取相关对象的Type
,请使用object.GetType()
方法,如下所示:
Type myType = myObject.GetType();
PropertyInfo[] properties = myType.GetProperties(
BindingFlags.Public | BindingFlags.Instance);
这假定你已经有了一个类型的实例,但你不知道编译时的类型是什么,或者它可以是任何类型。
答案 2 :(得分:0)
您需要静态 Type.GetType 方法。例如:
Type t=Type.GetType("System.String");