Я инкапсулировал объект в классе, который будет использоваться окном (назовем этот класс Foo).Foo создается в конструкторе окна, но после этого ему ничего не нужно, кроме как существовать до конца окна.Проблема заключается в том, что Visual Studio сообщает мне, что закрытый член, назначенный экземпляру Foo, можно удалить, поскольку он никогда не читается (я не использую экземпляр Foo где-либо еще в окне, кроме конструктора).Я предполагаю, что это делает Foo кандидатом на сборку мусора, но, возможно, есть что-то, что сохранит Foo в живых, о чем я не знаю.Эту проблему можно решить, унаследовав ее от Window и реализовав эту функцию и используя ее в качестве базового класса Window, но Foo - не единственная подобная функция, и C # не обрабатывает множественное наследование.Любые комментарии или советы приветствуются.
PS: Это приложение WPF в шаблоне MVVM.
public partial class MainView : Window
{
private readonly Foo _foo;
public MainView()
{
InitializeComponent();
_foo = new Foo(this);
}
// Could that be a solution (but it's annoying) ?
//
//~MainView()
//{
// GC.KeepAlive(_foo);
//}
}
public sealed class Foo
{
public Foo(Window window)
{
window.SourceInitialized += OnSourceInitialized;
window.Closed += OnClosed;
}
private void OnSourceInitialized(object sender, EventArgs e)
{
LoadSomething();
}
private void OnClosed(object sender, EventArgs e)
{
SaveSomething();
}
}