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

时间:2013-09-04 13:57:26

标签: c# inheritance

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

我有一个基类

 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中的属性吗?

2 个答案:

答案 0 :(得分:5)

没有。正如FredrikMörk在their answer here中所述:

  

基类没有(更重要的是不应该)知道任何事情   关于派生类属性。不同的派生类可以有不同的集合   添加了属性。让基类意识到这一点会抵消   面向对象设计的重要原则

答案 1 :(得分:1)

没有。您只需在要放置FnmaRecord实例的类上创建TitleHolder实例,以便可以访问TitleHolder和FnmaRecord的属性。