从基类 C# 调用子类方法 [英] calling child class method from base class C#

查看:40
本文介绍了从基类 C# 调用子类方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以从基类引用中调用子类方法?请建议...

Is it possible to call child class method from base class reference? Please suggest...

代码示例如下:

public class Parent
{
    public string Property1 { get; set; }
}

public class Child1:Parent
{
    public string Child1Property { get; set; }
}
public class Child2 : Parent
{
    public string Child2Property { get; set; }
}

public class Program
{
    public void callMe()
    {
        Parent p1 = new Child1();
        Parent p2 = new Child2();

        //here p1 & p2 have access to only base class member.
        //Is it possible to call child class memeber from the base class reference based on the child class object it is referring to?
        //for example...is it possible to call as below:
        //p1.Child1Property = "hi";
        //p2.Child1Property = "hello";
    }
}

推荐答案

实际上你已经创建了一个 Child1Child2 实例,所以你可以cast 给他们:

Actually you´ve created a Child1 and Child2 instances, so you can cast to them:

  Parent p1 = new Child1();
  Parent p2 = new Child2();

  // or ((Child1) p1).Child1Property = "hi";
  (p1 as Child1).Child1Property = "hi";
  (p2 as Child2).Child2Property = "hello";

要检查 cast 是否成功,请测试 null:

To check if cast successful, test for null:

  Child1 c1 = p1 as Child1;

  if (c1 != null)
    c1.Child1Property = "hi";

然而,更好的设计是分配给 Child1Child2 局部变量

A better design, however, is assign to Child1 and Child2 local variables

   Child1 p1 = Child1(); 
   p1.Child1Property = "hi"; 

这篇关于从基类 C# 调用子类方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆