如何根据名称获取对象类型

moondreamyou 2013-06-19 02:01:38
仅知道名称,是字符串,如何根据名称获取对象类型? 假设用到的类已添加引用。
string []type =new string[3]{"int","bool","MyNameSpace.MyClass"...};
Type t1=?;
Type t2=?;
Type t3=?;
...

...全文
400 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
directx_begin 2014-08-07
  • 打赏
  • 举报
回复
你这样处理一下,就可以通过简单的方式,达到你的需求了 string []type =new string[3]{"System.Int32","System.Boolean","MyNameSpace.MyClass"...}; Type t1=Type.GetType(type [0]); Type t2=Type.GetType(type [1]); Type t3=Type.GetType(type [2]);
本拉灯 2013-06-20
  • 打赏
  • 举报
回复
引用 10 楼 moondreamyou 的回复:
[quote=引用 9 楼 wyd1520 的回复:] [quote=引用 5 楼 moondreamyou 的回复:] 好吧,之前可能表达得不够清楚,重新说一下。以此为准。 string []myTypeStr =new string[3]{"int","bool","MyNameSpace.MyClass"...}; Type t1=GetType(myTypeStr[0]);//结果为System.Int32 Type t2=GetType(myTypeStr[1]);//结果为System.Boolean Type t3=GetType(myTypeStr[2]);//结果为MyNameSpace.MyClass ... 求GetType方法。 要求:能够根据“字符串描述”,返回对应的Type。
返射好像不能用。只能这样,自己把常用的那几中对象加进去, quote] 不会吧,要自己一个个穷举,那么多怎么穷举,而且还不知道会不会遗漏,没有更好的方法吗?[/quote] 也就那么几个基本类型,还但心个啥子,自己 百度C#的基本类型,即可。
moondreamyou 2013-06-20
  • 打赏
  • 举报
回复
引用 9 楼 wyd1520 的回复:
[quote=引用 5 楼 moondreamyou 的回复:] 好吧,之前可能表达得不够清楚,重新说一下。以此为准。 string []myTypeStr =new string[3]{"int","bool","MyNameSpace.MyClass"...}; Type t1=GetType(myTypeStr[0]);//结果为System.Int32 Type t2=GetType(myTypeStr[1]);//结果为System.Boolean Type t3=GetType(myTypeStr[2]);//结果为MyNameSpace.MyClass ... 求GetType方法。 要求:能够根据“字符串描述”,返回对应的Type。
返射好像不能用。只能这样,自己把常用的那几中对象加进去, quote] 不会吧,要自己一个个穷举,那么多怎么穷举,而且还不知道会不会遗漏,没有更好的方法吗?
本拉灯 2013-06-19
  • 打赏
  • 举报
回复
引用 5 楼 moondreamyou 的回复:
好吧,之前可能表达得不够清楚,重新说一下。以此为准。 string []myTypeStr =new string[3]{"int","bool","MyNameSpace.MyClass"...}; Type t1=GetType(myTypeStr[0]);//结果为System.Int32 Type t2=GetType(myTypeStr[1]);//结果为System.Boolean Type t3=GetType(myTypeStr[2]);//结果为MyNameSpace.MyClass ... 求GetType方法。 要求:能够根据“字符串描述”,返回对应的Type。
返射好像不能用。只能这样,自己把常用的那几中对象加进去, Dictionary<string, Type> dir = new Dictionary<string, Type>(); dir.Add("int", typeof(int)); dir.Add("float", typeof(float)); dir.Add("double", typeof(double)); dir.Add("string", typeof(string)); Type inttype = dir["int"]; Type floatType = dir["float"];
moondreamyou 2013-06-19
  • 打赏
  • 举报
回复
对于系统类型,应该怎么去转换呢? 比如int实际对应的是System.Int32,要一个个写CASE语句吗,.NET有没有什么方法可以直接获取的? switch (typeFullName.ToLower()) { case "int": typeFullName = "System.Int32"; break; case "string": typeFullName = "System.String"; break; case "bool": typeFullName = "System.Boolean"; break; case "byte": typeFullName = "System.Byte"; break; case "float": typeFullName = "System.Single"; break; case "decimal": typeFullName = "System.Decimal"; break; case "long": typeFullName = "System.Int64"; break; case "object": typeFullName = "System.Object"; break; }
moondreamyou 2013-06-19
  • 打赏
  • 举报
回复
引用 6 楼 zxy397472251 的回复:
可以通过反射 遍历 程序集, 再判断 swich 判断是否为已知类型 并操作
是不是系统类型和自定义类型需要分开处理才行?
CqCoder 2013-06-19
  • 打赏
  • 举报
回复
可以通过反射 遍历 程序集, 再判断 swich 判断是否为已知类型 并操作
moondreamyou 2013-06-19
  • 打赏
  • 举报
回复
好吧,之前可能表达得不够清楚,重新说一下。以此为准。 string []myTypeStr =new string[3]{"int","bool","MyNameSpace.MyClass"...}; Type t1=GetType(myTypeStr[0]);//结果为System.Int32 Type t2=GetType(myTypeStr[1]);//结果为System.Boolean Type t3=GetType(myTypeStr[2]);//结果为MyNameSpace.MyClass ... 求GetType方法。 要求:能够根据“字符串描述”,返回对应的Type。
moondreamyou 2013-06-19
  • 打赏
  • 举报
回复
引用 1 楼 wyd1520 的回复:
string []type =new string[3]{"int","bool","MyNameSpace.MyClass"...}; 这个你不都知道了么。还类型。。。
汗,我要的是Type t1,t2,t3..都是类型对象,要的就是这个类型对象,不是实例对象。
coobai 2013-06-19
  • 打赏
  • 举报
回复
...
zhanwengong 2013-06-19
  • 打赏
  • 举报
回复
Type t = Type.GetType("String"); object obj = Activator.CreateInstance(t);
本拉灯 2013-06-19
  • 打赏
  • 举报
回复
string []type =new string[3]{"int","bool","MyNameSpace.MyClass"...}; 这个你不都知道了么。还类型。。。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧