c# - 如何处理特定对象的创建
问题描述
我的问题是关于 .NET 4.6.2、Winforms 和 C#。假设我们有一个复杂的系统,它使用多个具有非常复杂的 UI 结构(用户控件、停靠面板、选项卡控件等)的 MDI WinForm 实例。请求是准备一些微创机制,通过布局自定义功能扩展此应用程序。用户应该能够移动/调整窗口内容并保存它。我已经实现了这个自定义,但我需要让它自动加载和保存,而不需要修改数百个 OnLoad() 和 Dispose() 方法。我可以这样想象:所有底层的可定制组件都必须实现 ILayoutSupport 接口。
public interface ILayoutSupport
{
public void RestoreLayout()
public void SaveLayout();
}
public class MyUserControl: UserControl,ILayoutSupport {...}
此外,还有一个守护程序服务 LayoutController 可以监听所有 ILayoutSupport 实例的创建,它:
- 每次创建新实例时调用 RestoreLayout
- 在应该处置实例时调用 SaveLayout。
我的问题是,这种方法“架构上”是否有效?我尝试在我的 LayoutController 服务中使用 CreateHandle 事件处理程序,但也许有更好的方法来挂钩所有特定类型的创建/处置?我考虑过使用 C# 属性而不是接口并将一些例程注入到我的窗口中,但我不知道它应该怎么做。或者也许有更好的解决方案来解决我的问题?感谢所有评论。
解决方案
推荐阅读
- css - 水平对齐两个 div,垂直对齐第三个 div
- git - 如何自动清理合并压扁的分支?
- javascript - 单击三个按钮之一后如何显示 h2 元素,然后在主要部分显示后显示 h2 元素的一部分?
- php - 使用 Codeigniter 在登录用户的个人资料页面上显示信息?
- javascript - 从外部弹出窗口发送的 POST url 加载页面
- c++ - 如何正确返回链接 ilist 中的插入元素
- django - DoesNotExist at /accounts/login/ (delate example.com from admin page)
- javascript - 如何在 localStorage 中不断更新数据?
- javascript - 从远程托管页面访问 soket.io 服务器 - 需要未定义
- javascript - 使用 Bing Image API Javascript 搜索图像