winform中用了一个SplitContainerSplitContainer左边的panel里用了一个treeviewtreeview的不同层次的节点对应着不同的类(对象)我想通过点击节点在SplitContainer右面的panel里加载不同的窗口,并在这个窗口里能取得节点所对应的对象感觉用反射可行,但个人对反射了解的太少,求个小例子或思路或和此题相关的反射教程.

解决方案 »

  1.   

    Assembly ass = Assembly.LoadFile("...\xx.dll");
    Form f = (Form)ass.CreateInstance("类全路径");---基本的就是这么
      

  2.   

    如果这样,你可以在给treeitem赋值的时候,重写treeviewitem类,添加一个object的引用来记录对象的引用。其他地方只要使用就可以了。不用在反射了。如果记录的不是对象,是类,那你如果记录的是类名,就CreateInstance,如果不是,就LoadFile,再创建对象。
      

  3.   

    复制
    TreeNode node = ....
    node.Tag = yourclass1;
    获取
    YourClass yourcalss1 = (YourClass)node.Tag;
      

  4.   

    只是根据不同节点创建对象而以。用不着反射。用Hashtable缓存所有对象,再根据不同节点的Id或者Text取对象就可以了
      

  5.   

    interface A
    {
        void B();
        int C();
    }class M : A
    {
        public void B()
        { }
        public int C()
        {
            return 0;
        }
    }
    class D
    {
        public A E()
        {
            return (A)System.Reflection.Assembly.Load("").CreateInstance("M");
        }
    }class L
    {
        public void O()
        {
            D d = new D();
            A a = d.E();
            a.B();
        }    public int X()
        {
            D d = new D();
            A a = d.E();
            return a.C();
        }
    }反射工厂模式