1

我正在从这样的无参数构造函数类派生一个类:

public class Base
{
    public Base(Panel panel1)
    {

    }
}

public class Derived : Base
{
    public Derived() : base(new Panel())
    {
        //How do I use panel1 here?
    }
}

如何在 Derived 中引用 panel1?

(欢迎使用简单的解决方法。)

4

4 回答 4

4

Adil 的回答假设您可以修改Base. 如果你不能,你可以这样做:

public class Derived : Base
{
    private Panel _panel;

    public Derived() : this(new Panel()) {}

    private Derived(Panel panel1) : base(panel1)
    {
        _panel = panel1;
    }
}
于 2012-12-26T10:57:37.630 回答
1

您需要定义Panelin Base,也可以使用protected代替public在此处阅读有关访问说明符的更多信息

public class Base
{
    public Panel panel {get; set;};
    public Base(Panel panel1)
    {
         panel = panel1;
    }
}


public class Derived : Base
{
    public Derived() : base(new Panel())
    {
          //  this.panel
    }
}
于 2012-12-26T10:54:29.930 回答
0

两种方式:

public class Derived : Base
{
    Panel aPanel;

    public Derived() : this(new Panel()) {}

    public Derived(Panel panel) : base(aPanel)
    {
        //Use aPanel Here.
    }
}

或者

public class Base
{
    protected Panel aPanel;

    public Base(Panel panel1)
    {
        aPanel = panel1
    }
}
于 2012-12-26T10:56:56.433 回答
0
public class Base
{
    // Protected to ensure that only the derived class can access the _panel attribute
    protected Panel _panel;
    public Base(Panel panel1)
    {
        _panel = panel1;
    }
}

public class Derived : Base
{
    public Derived() : base(new Panel())
    {
        // refer this way: base.panel
    }
}


此外,如果您只想为派生类提供 get 而不是 set,您可以这样做:

 public class Base
    {
        // Protected to ensure that only the derived class can access the _panel attribute
        private Panel _panel;
        public Base(Panel panel1)
        {
            _panel = panel1;
        }

        protected Panel Panel
        {  get { return _panel; } } 
    }

    public class Derived : Base
    {
        public Derived() : base(new Panel())
        {
            // refer this way: base.Panel (can only get)
        }
    }
于 2012-12-26T10:57:11.127 回答