首页 新闻 会员 周边 捐助

通过字符串如何创建内部类??

0
悬赏园豆:30 [已解决问题] 解决于 2009-12-14 22:54

我们都知道,可以使用反射通过字符串来创建一个类。

namespace car

{

public class Honda

{

  
public int weight {get;set;}

  
public class Odyssey

  {

    
public int long{get;set;}

}

}

}

 

 可以通过:

System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("car.Honda", false);

创建对象Honda,但是无法通过:

System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("car.Honda.Odyssey", false);

创建Odyssey对象。

我想了很多办法都不行。。

提示:外部类相当于内部类的一个命名空间,使用的时候,可以通过car.Honda.Odyssey使用。

gxpotato的主页 gxpotato | 初学一级 | 园豆:44
提问于:2009-12-14 11:55
< >
分享
最佳答案
0

namespace car
{
    public class InvokeClient
    {
        public void ClientInvoke()
        {
            Type pType = Type.GetType(this.GetType().Namespace + ".Honda", true, true);
            Honda ha = Activator.CreateInstance(pType) as Honda;
            int f = ha.weight;
            string mm = this.GetType().Namespace;
            pType = Type.GetType(this.GetType().Namespace + ".Honda+Odyssey", true, true); //中间是 "+" 号 哦
            car.Honda.Odyssey od = Activator.CreateInstance(pType) as car.Honda.Odyssey;
            int m = od.long1;
            pType = Type.GetType(this.GetType().Namespace + ".Honda+Odyssey+NEWCAR", true, true);
            car.Honda.Odyssey.NEWCAR  od2 = Activator.CreateInstance(pType) as car.Honda.Odyssey.NEWCAR ;//如果是内部类的内部类则是 两个 中间是 "+" 号 哦
            int mads = od2.fk;

        }

    }
    public class Honda
    {
        public int weight
        {
            get
            {
                return 1;
            }
    
        }
        public class Odyssey
        {
            public int long1
            {
                get { return 2; }
            }
            public class NEWCAR
            {
                public int fk
                {
                    get { return 200; }
                }
            }
        }
    }
}

收获园豆:30
woody.wu | 老鸟四级 |园豆:3621 | 2009-12-14 22:06
果然是老鸟啊。。。小弟对您真是佩服得六体投地。
gxpotato | 园豆:44 (初学一级) | 2009-12-14 22:54
果然是老鸟啊。。。小弟对您真是佩服得六体投地。。。已经测试通过。
gxpotato | 园豆:44 (初学一级) | 2009-12-14 22:54
果然是老鸟啊。。。小弟对您真是佩服得六体投地。。。已经测试通过。
gxpotato | 园豆:44 (初学一级) | 2009-12-14 22:54
其他回答(1)
0
Honda  _istance = (Honda )Activator.CreateInstance(Type.GetType("car.Honda.Odyssey,car.Honda", false, true));
persialee | 园豆:3217 (老鸟四级) | 2009-12-14 15:14
奇怪,我这里调试的时候,出现了“值不能为空”的错误,Type.GetType取不到值。
支持(0) 反对(0) gxpotato | 园豆:44 (初学一级) | 2009-12-14 16:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册