C#访问父方法的正确方法

时间:2013-11-25 21:07:11

标签: c# class oop parent

我是C#和OOP的新手并且已经研究了许多类似的主题,但最终比我开始时更加困惑。我需要能够从另一个命名空间中的子节点调用父类中的方法。

以下是我现在所看到的似乎有效的简化示例,但这是正确/最好的方式吗?

File Form1.cs:

namespace Test1
{
    public partial class Form1 : Form
    {
        NotTest1.Class1 myClass1 = null;

        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            // Start the child class and pass this parent
            myClass1 = new NotTest1.Class1(this);
        }

        public void Form1Function(String text) 
        {
            textBox1.AppendText(text + Environment.NewLine);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Do some stuff then call Function1 in myClass1
            myClass1.Function1();
        }

    }
}

文件Class1.cs:

namespace NotTest1
{
    class Class1 {
        Test1.Form1 _parent;
        public Class1(Test1.Form1 parent) {
            _parent = parent;
        }

        public void Function1()
        {
           // Do lots of "stuff"
            _parent.Form1Function("Got Here");
        }
    }
}

示例表示赞赏,因为我仍在努力学习所有正确的术语。

由于

3 个答案:

答案 0 :(得分:0)

Class1.cs中使用。

的最佳方法
using Test1;
namespace NotTest1
{
class Class1 {
    Form1 _parent;
    public Class1(Form1 parent) {
        _parent = parent;
    }

    public void Function1()
    {
       // Do lots of "stuff"
        _parent.Form1Function("Got Here");
    }
}

}

答案 1 :(得分:0)

如果Class1需要在Form1实例上调用方法,那么你所做的完全没问题,尽管我没有看到你如何在这里有父类和子类。你实际上是Class1类接受Form1实例以便在其上调用方法的内容。

答案 2 :(得分:0)

你做的很好。

尽管如此,您可能想要探索一些事件 - 这样您的Parent类可以实例化子类并订阅它的事件,并且您的子类可能与您的Parent类完全分离。

这个帖子上显示了一个非常好的,清晰的例子:

Super-simple example of C# observer/observable with delegates