我有很多对象,每个对象都有关于其类型的字符串信息.
喜欢:
string stringObjectType = "DateTime";
Run Code Online (Sandbox Code Playgroud)
在跑步的时候,我自己没有任何物体.
所以我无法测试它typeof (object)
如何通过以下方式运行对象类型时获取:
typeof (stringObjectType)
Run Code Online (Sandbox Code Playgroud)
Har*_*uck 35
try
{
// Get the type of a specified class.
Type myType1 = Type.GetType("System.DateTime");
Console.WriteLine("The full name is {myType1.FullName}.");
// Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
Type myType2 = Type.GetType("NoneSuch", true);
Console.WriteLine("The full name is {myType2.FullName}.");
}
catch(TypeLoadException e)
{
Console.WriteLine(e.Message);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
Run Code Online (Sandbox Code Playgroud)
Pho*_*cUK 23
您可以使用Type.GetType()从其字符串名称中获取类型.所以你可以这样做:
Type DateType = Type.GetType("System.DateTime");
Run Code Online (Sandbox Code Playgroud)
你不能只使用"DateTime",因为那不是类型的名称.如果你这样做并且名称错误(它不存在)那么它将抛出异常.所以你需要一个尝试/捕捉这个.
您可以通过执行以下操作获取任何给定对象的正确类型名称:
string TypeName = SomeObject.GetType().FullName;
Run Code Online (Sandbox Code Playgroud)
如果你需要使用模糊或不完整的名字,那么你将有一个有趣的时间搞乱反思.并非不可能,但肯定是一种痛苦.