解决方案 »

  1.   

    实现或继承 关系。不确定的情况下可以用as操作符:
    IDataset pOutDataset = apFeatureClass as IDataset;
    if (pOutDataset  != null) ...
      

  2.   

    IDataset pOutDataset = (IDataset)apFeatureClass;如果apFeatureClass的object的真正类型是IDataset或者继承或者实现自IDataset,就可以成功转换。
      

  3.   

    那如果用as的话,转换失败的就会出错而不会出现null,是这样么?
      

  4.   

    IDataset pOutDataset = apFeatureClass as IDataset;

    .IDataset pOutDataset = (IDataset)apFeatureClass;
    有区别?
      

  5.   

    1、第二行可能抛出异常。
    2、第一行中apFeatureClass不可以是结构。
      

  6.   


    你的apFeatureClass和IDataset是什么关系?
      

  7.   

    apFeatureClass是一个IFeatureClass接口的一个实例,IFeatureClass继承自IObjectClass,IObjectClass继承自IClass。IDataset未有任何继承
      

  8.   

    1、第二行可能抛出异常。
    2、第一行中apFeatureClass不可以是结构。
    不可以是结构,为什么
      

  9.   

    更正:
    IDataset pOutDataset = apFeatureClass as IDataset ;
    目标类型IDataset不可以是结构。
      

  10.   

    看了大家的讨论,我没接触过as,不知道这个是什么情况。
    [看了大家的讨论,我没接触过as,不知道这个是什么情况。]
    同意2楼的,子类转换成父类,就隐藏了子类特有的属性字段和方法。对于外部而言,[一个由子类向上转换成的父类对象]和[一个父类对象]是没有任何区别的。有继承关系的对象,是可以向沿着继承树向上转换而不会有任何异常;但是继承树的两个兄弟结点上的对象互相转换是有可能发生异常的(简单类型可能不会)!
    最后,在对于不确定会不会发生异常的代码处,都应该进行异常捕获和处理。
      

  11.   

    建议使用as,判断结果是否为null
      

  12.   

    apFeatureClass是一个IFeatureClass接口的一个实例,IFeatureClass继承自IObjectClass,IObjectClass继承自IClass。IDataset未有任何继承这样子怎么可以。apFeatreClass没实现IDataset怎么可以转成IDataset。