object result = YourMethod();
RealOnlyCollection<MyClass> collection = result as RealOnlyCollection<MyClass>;

解决方案 »

  1.   

    请看清楚,我要的是一个RealOnlyCollection<Object>。
    我是通过反射DLL调用的,对于调用者来说他不知道MyClass这个类,但函数返回的是一个RealOnlyCollection<MyClass>,我要能够读取Collection里的内容。
      

  2.   

    不明白楼主的意思 强制转型 就as操作符 转下 转不了就抛个null 这个肯定没有问题要是想调用的话 还不知道 就反射直接通过object,getType
      

  3.   

    反射没有问题。MyClass是通过反射得到的,MyClass里有一个函数可以的到同一个DLL下的OtherClass的集合。这个集合我也得到了,但是由于返回的是Object,我没有办法使用。我想将这个Object转换成其他集合,比如ReadOnlyCollection<Object>,但是运行总是有异常。
      

  4.   

    比如:Type DllType = MyAssembly.GetType("MyClass");
    Object DllObj = Activator.CreateInstance(DllType , null);
    Type OtherType = MyAssembly.GetType("OtherClass");
    MethodInfo DllMethod= DllType.GetMethod("DllMethod", new Type[] { typeof(string)});
    Object objs = (Object)DllMethod.Invoke(DllObj, new Object[] { "AllObjects"});现在这个objs里是ReadOnlyCollection<OtherType>,但是我用:
    ReadOnlyCollection<Object> objColl = objs as ReadOnlyCollection<Object>;
    objColl得到的是NULL。应该怎么做呢?
      

  5.   

    类型不匹配,转换后当然是null啦
    ReadOnlyCollection<MyClass>与ReadOnlyCollection(Object)没有继承关系,不要将它跟任何类型的最终基类都是Object混为一谈。
      

  6.   

    impeller(竹子),除了用ReadOnlyCollection<OtherType>外,那有没有什么办法可以得到这个集合的内容呢?