我是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");
}
}
}
示例表示赞赏,因为我仍在努力学习所有正确的术语。
由于
答案 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