try
                    {
                        var types = Assembly.LoadFrom((new FileInfo(file)).FullName).GetTypes();
                        if (types == null)
                            continue;
                        foreach (var t in types)
                        {
                            var intef = t.GetInterface("GPLib.IParaSelector");
                            if (intef != null)
                            {
                                var tmp = Activator.CreateInstance(t);
                                var obj = tmp as IParaSelector;//这里居然为null
                                if (obj != null) ParaTypes.Add(obj.TypeGUID, t);
                            }
                        }
                    }
C#3。5
先查询的接口,然后才转换的,居然会有问题!
有人遇到过吗?如何处理?

解决方案 »

  1.   

    t是一个接口类型,Activator怎么创建实例?
    必须调用实现接口的类型或者反射调用工厂方法
      

  2.   

    var intef = t.GetInterface("GPLib.IParaSelector");
    vb.net?是C#的话我这里的方法好象是
    var intef = t.GreateInterface("GPLib.IParaSelector");
      

  3.   

    实现接口的类型t有默认构造没有?这里的接口IParaSelector和上面的参数GPLib.IParaSelector是同一个接口?也就是这个接口所在的程序集是公用的?