我有这个问题。我在主窗口中创建了两个类的instaces。我需要在后面的代码中创建其他从属窗口,在这个窗口中我需要使用在主窗口中创建的对象的方法。
public partial class MainWindow
{
//internal MyInterface1 MyObject1;
//internal MyInterface2 MyObject2;
internal MyClass1 MyObject1;
internal MyClass2 MyObject2;
public MainWindow()
{
InitializeComponent();
//create instances
MyObject1 = new MyClass1();
MyObject2 = new MyClass2();
}
private void SomeMethod()
{
//in this window I neew consume some method and propertie of MyObject1 and MyObject1
//my temporary solution is:
var slaveWindow = new SlaveWindow(MyObject1, MyObject2);
}
}
可以存在合适的解决方案,谢谢。
答案 0 :(得分:1)
您的“临时”解决方案没有任何问题。我也是这样做的。
或者,您可以公开公开这两个对象,然后将MainWindow
传递给SlaveWindow
:
class MainWindow : ...
{
public MyClass1 MyObject1 { get; private set; }
public MyClass1 MyObject2 { get; private set; }
...
var slaveWindow = new SlaveWindow(this);
...
}
class SlaveWindow : ...
{
public SlaveWindow(MainWindow mainWindow)
{
mainWindow.MyObject1.SomeMethod();
mainWindow.MyObject2.SomeMethod();
}
}
无论哪种解决方案更可取,可能取决于两个对象的性质。但我认为你现在的解决方案很好是相当安全的。