加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c#:BaseClass虚方法使用在子类中定义的对象

发布时间:2020-12-16 01:28:24 所属栏目:百科 来源:网络整理
导读:我有一个基类和许多子类. 在每个子类中,我使用对象A – 因此我将它放在基类中. 在子类的一半中,我使用了对象B,因此我没有把B放在基类中. 我希望我的基类包含尽可能多的功能,因此我希望基类中的方法能够“做某事”如果定义了对象B.那有意义吗? 我可能会从错
我有一个基类和许多子类.
在每个子类中,我使用对象A – 因此我将它放在基类中.
在子类的一半中,我使用了对象B,因此我没有把B放在基类中.
我希望我的基类包含尽可能多的功能,因此我希望基类中的方法能够“做某事”如果定义了对象B.那有意义吗?

我可能会从错误的角度看待这个问题,我希望你能引导我朝着正确的方向前进.如果我没有充分解释这个问题,请告诉我

我试图将对象B放在基类中,但我不希望每个子类都能够使用对象B.

abstract class BaseClass
{
    public Object A { get; set; }

    protected virtual void SomeMethod()
    {
        if (!(A is null))        
        {
            //Do thing with A
            //This works fine
        }

        if (!(B is null))        
        {
            //Do thing with B
            //This doesnt work - But I want to it work
        }
    }
}

class ChildClass : BaseClass
{
    public Object B { get; set; }
}

解决方法

最简单的解决方案是从您的基类派生另一个类,向其添加B属性和相关功能,并使所有共享此属性和类的类从该类派生而不是直接从基类派生.

像这样的东西:

abstract class BaseClassB : BaseClass
{
    public object B {get;set;}

    protected override void SomeMethod()
    {
        base.SomeMethod();
        if (B != null)        
        {
            //Do thing with B
            //
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读