我要写这样的一个函数,入仓单业务处理中,需要用GetOrderData(int _orderID)返回入仓单数据,但是我的入仓单数据是继承自DataSet的数据实体,GetOrderData(int _orderID)函数是继承自单据类GetOrderData(int _orderID)的,在单据类中返回DataSet实体,现在我用Override,系统报错为,返回值不同,不能被重写。我想我的返回值是继承自DataSet,但是还是不能Override。相同的道理,我的函数参数不同也不能Override,即使参数A是继承B的  
各位有没有什么办法?

解决方案 »

  1.   

    感觉用法很怪异,用new关键字代替override看看,不敢保证行
      

  2.   

    public new 当前要返回的类型 GetOrderData(int _orderID)
    {
      基类GetOrderData中返回的类型 tmp = base.GetOrderData(_orderID);  对tmp进行分析,返回当前要返回的类型;
    }楼主应该知道new与override的区别
      

  3.   

    以我目前的理解程序也只能是new了,和上面的一样
      

  4.   

    只有virtual才能override.
    在这种情况只能用new
      

  5.   


    函数的重载是靠返回值和参数还有函数名来确定的,这些相当一个函数身份证,当然不能改。用楼上的方法可以解决一些问题,但从楼主的本意来说是不对的,因为我想楼主要用到多态,如果用new 的方法的话,必须显示指定调用这些方法的类的类型
    例如
    public class a
    {
       public virtual void func()
       {}
    }
    public class b:a
    {
       public new int void func()
       {
          reutrn 0;
        }
    }
    ..
    程序里可能要这样调用
     a a1 = new b();
     a.func();//这里调用的是a的func,而不是b的func解决方法:使用强制转换,但可以会出现类裁剪