我定义了多个类我想通过一个过程来处理这几个类,类的名称要在过程中使用,所以希望实现上面说的方法,我把类名当字符串传入然后在过程中有什么方法可以把这个字符串转成类名吗?
class a
class b 
void f(string p)
{
    foreach (object c in object)
    {
        if (c is p)     //这个p有什么方法可以根据我的需要进行转换呢
        ......
    }
}

解决方案 »

  1.   

    void f(string p)
    {
        foreach (object c in object)
        {
            if (c.GetType().Name == p)     //这个p有什么方法可以根据我的需要进行转换呢
            ......
        }
    }
      

  2.   

    只有通过反射实现
    查阅一下MSDN,反射
      

  3.   

    反射看不明白,我想将p实例化成classname的类要怎么写,这样写报错“未将对象引用设制到对象的实例”
    void f(object p,string classname)
    {
         p = (object)Type.GetType(frmname).GetConstructor(System.Type.EmptyTypes).Invoke(null);         // p = new classname
    }
      

  4.   

    [Assembly].Load([Assembly].GetExecutingAssembly().FullName).CreateInstance(className)
      

  5.   

    className是全名称,必须包含命名空间和类名
      

  6.   

    to pupu(泡泡)
    还是原来的错误
    Assembly.Load(Assembly.GetExecutingAssembly().FullName).CreateInstance(className)我想应该是没有new所以报这个错,但不知怎么才能new出这个className字符串中的类呢?
      

  7.   

    Type t = Type.GetType("System.Int32");
    object obj = Activator.CreateInstance(t);
    Console.WriteLine(obj.GetType().ToString());
    int i = (int)obj;
    Console.WriteLine(i);
      

  8.   

    to pupu(泡泡)
    不管我className怎么写都是同一个错
    一定要我在写这句前先把p = new classname(实际的类)一个出来。但这样做就没意义了,我是想通过上面这句实现p=new classname(类的字符串名),怎么写呢?还请高人指点
      

  9.   

    自己好好去看看 CreateInstance 方法的说明
      

  10.   

    原来是这样,多谢楼上各位,特别是leonchenjian(小黑)