我们可以通过使用基类对象来访问派生类属性吗?

use*_*542 1 c# inheritance

我们可以通过使用基类对象来访问派生类属性吗?

我有一个基类

 public abstract class FnmaRecord
    {
        public int Id { get; set; }            
        public abstract String Prefix
        {
            get;
        }
    }
Run Code Online (Sandbox Code Playgroud)

并且有许多派生类继承了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; }
    }
Run Code Online (Sandbox Code Playgroud)

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

Kur*_*ran 5

不,正如弗雷德里克·莫尔克在这里的回答中所述:

基类不会(更重要的是不应该)了解有关派生类属性的任何信息.不同的派生类可以具有不同的添加属性集.让基类意识到这一点会抵消面向对象设计的重要原则