首页 > 解决方案 > C#从抽象类访问基类变量/函数

问题描述

也许这是不可能的,或者我混淆了一些东西,但它打破了我的头。

假设我们有一个抽象类 A 和一个基于 A 的类 B。A 是否可以从 B 访问变量/函数?

例子:

 abstract class A
 {
    public bool activeA = false;

    public bool getState()
    {
        return test; // The variable from class B
    }
 }

 class B : A
 {
    public bool test = true;

    public void isActive()
    {
         return base.getState(); // So this should return true because getState() should access the variable test^^
    }

 }

标签: c#classinheritanceabstract

解决方案


不,这是不可能的。对或潜在地A一无所知。BC..Z

如果test会打开A,那么两者都A可以B访问它。或者,您可以创建一个由 实现的接口,该接口B知道AB作为参数传递给A.

这可能看起来像这样:

interface IB
{
    bool Test { get; }
}

abstract class A
{
   public bool activeA = false;

   public bool getState(IB arg)
   {
       return arg.Test;
   }
}

class B : A, IB
{
   public bool Test => true;

   public bool isActive()
   {
         return base.getState(this); 
    }
 }

推荐阅读