C#, access child properties from parent reference?

后端 未结 5 941
孤城傲影
孤城傲影 2020-12-21 11:31
public void GetProps(Parent p){

   // want to access lots of child properties here
   string childProp1 = p.prop1;
   bool childProp2 = p.prop2;
   bool childProp3          


        
5条回答
  •  难免孤独
    2020-12-21 11:54

    As I understood from your question, you want to access Children Class members from object of Parent Class.

    This behavior is not allowed in OOP. One way can be as suggested by Jon Skeet to create a Abstract base class and implement the required members in Children Classes.

    Other way round can be to assign the required values to members of base class in derived class constructor using base construct. I do not know this will solve your problem or not. But Consider the following snippet for example:

     public class BaseClass
    {
        public string FirstName = "Base Class";
        public string LastName = "Base Class";
    }
    
    public class DerivedClass : BaseClass
    {
        public DerivedClass()
        {
            base.LastName = "Derived Class";
        }
    }
    
    internal class Tester
    {
        private static void Main(string[] args)
        {
            BaseClass objBaseClass = new BaseClass();
            Console.WriteLine("First Name : " + objBaseClass.FirstName);
            Console.WriteLine("Last Name : " + objBaseClass.LastName);
    
            DerivedClass objDerivedClass = new DerivedClass();
            Console.WriteLine("First Name : " + objDerivedClass.FirstName);
            Console.WriteLine("Last Name : " + objDerivedClass.LastName);
    
            BaseClass objBaseDerivedClass = new DerivedClass();
            Console.WriteLine("First Name : " + objBaseDerivedClass.FirstName);
            Console.WriteLine("Last Name : " + objBaseDerivedClass.LastName);
    
            Console.ReadKey();
        }
    }
    

    O/P First Name : Base Class

    Last Name : Base Class

    First Name : Base Class

    Last Name : Derived Class

    First Name : Base Class

    Last Name : Derived Class

    Let me know, if it helps out.

提交回复
热议问题