C# 继承问题

2019-07-17 10:40发布

问题:

2个子类继承一个父类的一个 GetOrderInfo 方法,但2个子类的Info模型完全不一样,那父类的这个返回值怎么设置?子类的怎么设置,或者说怎么处理?

场景:
比如要2个平台的订单信息,都要获取信息,处理订单,就要封装。2个类都有GetOrderInfo ,则继承父类有GetOrderInfo,但2个平台的OrderA,OrderB完全不一样,都不能提取公共(基础)信息的那种,那GetOrderInfo的返回值怎么设置?用object么?或者这种情景有别的处理方法?

回答1:

可以用泛型 public <T> GetOrderInfo()



回答2:

完全不一样的东西.你用一个方法返回.这本身就非常奇怪.



回答3:

泛型接口了!



回答4:

就返回父类类型啊,使用的时候再转

    public interface IOrder
    {
        BaseOrder GetOrderInfo();
    }

    public abstract class BaseOrder:IOrder
    {
        public string Name { get; set; }

        public abstract BaseOrder GetOrderInfo();
    }

    public class OrderA : BaseOrder
    {
        public string A { get; set; }
        public override BaseOrder GetOrderInfo()
        {
            throw new NotImplementedException();
        }
    }

    public class OrderB : BaseOrder
    {
        public string B { get; set; }
        public override BaseOrder GetOrderInfo()
        {
            throw new NotImplementedException();
        }
    }

两个子类完全不一样也可以不用父类,直接接口

    public interface IOrder
    {
        IOrder GetOrderInfo();
    }


    public class OrderA : IOrder
    {
        public string A { get; set; }

        public IOrder GetOrderInfo()
        {
            throw new NotImplementedException();
        }
    }

    public class OrderB : IOrder
    {
        public string B { get; set; }

        IOrder IOrder.GetOrderInfo()
        {
            throw new NotImplementedException();
        }
    }


标签: 封装 继承