可以在Base类的方法中使用抽象属性值吗?

时间:2009-03-19 00:37:47

标签: c#

如果我在C#Base类中创建一个抽象属性,然后一个子类实现它,那么稍后一旦子类设置该属性,是否可以在我的一个Base类的方法中引用和使用该属性?

我希望将一个值从我的子类传递给基类,这样在我的基类中我可以在该Base类方法中使用它来执行一些逻辑。

甚至不是一个属性而是一个字段而不是...相同的想法......但是我需要在子类中设置该字段,如果情况......不认为甚至可能吗?如果我可以通过抽象字段在我的子类中设置某种类型的标志,那么我真的不需要属性,这样基类就可以使用该标志来实现我的子类将依赖的某些逻辑,例如发送HttpRequest。

基本上我希望能够在任何子类中使用此基数设置一个标志来表示true或false,以便Base类的SendRequest方法知道是否从我在基类中设置的几个URI中进行选择。该标志将确定在基类的SendRequest方法中使用哪种格式,因为每个子类将根据基类应该为该子类使用的URI格式而变化,以便代表子类发送HttpRequest。

2 个答案:

答案 0 :(得分:7)

是的,这基本上是抽象属性和方法的全部目的。

答案 1 :(得分:1)

听起来像这样的东西会起作用:

class Base
{
    protected Boolean Flag { get; set; }

    public void Foo()
    {
        if (this.Flag)
        {
            // logic here
        }
    }
}

class Child : Base
{
    public Child()
    {
        // you can set Flag anywhere you wish
        this.Flag = true;
    }
}

我认为你不需要abstract。您可以在子类型中设置Flag,然后在条件逻辑的任一类型中进行检查。