This question already has answers here:
Accessing derived class property members from base class object in CSharp
                                
                                    (2个答案)
                                
                        
                                6年前关闭。
            
                    
我们可以使用基类对象访问派生类的属性吗?

我正在上基础课

 public abstract class FnmaRecord
    {
        public int Id { get; set; }
        public abstract String Prefix
        {
            get;
        }
    }


并且有许多派生类继承了FnmaRecord类

 public class TransactionHeader : FnmaRecord
    {
        public override string Prefix { get {return "TH";} }

        public static readonly string TransactionId = "T100099-002";

        public String TransactionControlNumber { get; set; }

    }


public class TitleHolder : FnmaRecord
    {
        public override string Prefix { get {return "02C";} }

        public string TitleHolderName { get; set; }
    }


现在,我可以在另一个类中使用FnmaRecord的实例来访问TitleHolder中的属性吗?

最佳答案

不。正如FredrikMörk在their answer here中所说:


  基类不知道(更重要的是不知道)
  关于派生类的属性。不同的派生类可能具有不同的一组
  添加的属性。使基类意识到这一点将抵消
  面向对象设计的重要原则

08-25 12:36
查看更多