动态使用typeof

时间:2009-03-09 21:36:05

标签: .net reflection

我正在使用反射来获取对象的属性,并且没有任何困难,但我需要使我的类更通用,所以基本上我要做的是以下内容:

PropertyInfo[] properties = (typeof ("ObjectName")).GetProperties(BindingFlags.Public | BindingFlags.Instance);

或类似的东西。注意在typeof中使用字符串。我知道这不起作用,这只是为了表明我想要完成的事情。我也试过了:

public void Test(object myObject)  
{  
    typeof(myObject.GetType());  

    Type myType = myObject.GetType();
    typeof(myType);
}  

没有成功。

3 个答案:

答案 0 :(得分:3)

听起来您可能需要Type.GetTypeAssembly.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");