有什么方法可以把字符串转为类的实例吗?

mqmmx 2005-10-26 11:19:59
我定义了多个类我想通过一个过程来处理这几个类,类的名称要在过程中使用,所以希望实现上面说的方法,我把类名当字符串传入然后在过程中有什么方法可以把这个字符串转成类名吗?
class a
class b
void f(string p)
{
foreach (object c in object)
{
if (c is p) //这个p有什么方法可以根据我的需要进行转换呢
......
}
}
...全文
180 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
v192 2005-10-26
  • 打赏
  • 举报
回复
只有通过反射实现
查阅一下MSDN,反射
JasonHeung 2005-10-26
  • 打赏
  • 举报
回复
void f(string p)
{
foreach (object c in object)
{
if (c.GetType().Name == p) //这个p有什么方法可以根据我的需要进行转换呢
......
}
}
humin1906 2005-10-26
  • 打赏
  • 举报
回复
通过反射也许可以实现
humin1906 2005-10-26
  • 打赏
  • 举报
回复
有可能这样转换吗?
mqmmx 2005-10-26
  • 打赏
  • 举报
回复
原来是这样,多谢楼上各位,特别是leonchenjian(小黑)
pupo 2005-10-26
  • 打赏
  • 举报
回复
自己好好去看看 CreateInstance 方法的说明
mqmmx 2005-10-26
  • 打赏
  • 举报
回复
to pupu(泡泡)
不管我className怎么写都是同一个错
一定要我在写这句前先把p = new classname(实际的类)一个出来。但这样做就没意义了,我是想通过上面这句实现p=new classname(类的字符串名),怎么写呢?还请高人指点
leonchenjian 2005-10-26
  • 打赏
  • 举报
回复
Type t = Type.GetType("System.Int32");
object obj = Activator.CreateInstance(t);
Console.WriteLine(obj.GetType().ToString());
int i = (int)obj;
Console.WriteLine(i);
mqmmx 2005-10-26
  • 打赏
  • 举报
回复
to pupu(泡泡)
还是原来的错误
Assembly.Load(Assembly.GetExecutingAssembly().FullName).CreateInstance(className)

我想应该是没有new所以报这个错,但不知怎么才能new出这个className字符串中的类呢?
pupo 2005-10-26
  • 打赏
  • 举报
回复
className是全名称,必须包含命名空间和类名
pupo 2005-10-26
  • 打赏
  • 举报
回复
[Assembly].Load([Assembly].GetExecutingAssembly().FullName).CreateInstance(className)
mqmmx 2005-10-26
  • 打赏
  • 举报
回复
反射看不明白,我想将p实例化成classname的类要怎么写,这样写报错“未将对象引用设制到对象的实例”
void f(object p,string classname)
{
p = (object)Type.GetType(frmname).GetConstructor(System.Type.EmptyTypes).Invoke(null); // p = new classname
}

110,532

社区成员

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

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

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