【问题标题】:aop eventinterceptionaspect postsharpaop eventinterceptionaspect postsharp
【发布时间】:2011-07-27 03:43:01
【问题描述】:

为我的应用程序中的每个 DeveloperExpress XtraGrid 控件实现保存/恢复布局功能的最佳做法是什么。我在我的应用程序(GridControl、LookUpEdit、SearchLookUpEdit...)的每个 winform 上使用了很多 Grid 视觉元素,目前我正在使用加载/卸载事件来污染每个 winform,这些事件调用该表单上每个 Grid 元素的保存/恢复功能手动。我已经有了一个扩展方法,可以让保存/恢复网格成为一个函数调用现在我想要一个集中的类,我可以在其中负责保存/恢复我的应用程序中的每个网格类型。

我是 aop 的新手,但可以使用 postsharp 和全局事件拦截方面等工具完成类似的操作,其中加载/卸载事件将应用于在我的程序集中初始化的每个 Grid 类型?

【问题讨论】:

    标签: c# winforms devexpress aop postsharp


    【解决方案1】:

    是的,您可以使用 PostSharp 拦截事件。您可以查看以下文章以获取演练http://www.sharpcrafters.com/blog/post/PostSharp-Principals-Day-11-e28093-Interception-e28093-Part-3.aspx

    您可以构建一个切面,在事件触发时只调用您的扩展方法。可以全局应用方面以使用多播http://www.sharpcrafters.com/blog/post/Day-2-Applying-Aspects-with-Multicasting-Part-1.aspx http://www.sharpcrafters.com/blog/post/Day-3-Applying-Aspects-with-Multicasting-Part-2.aspx 为您节省一些工作

    【讨论】:

    • 感谢您的链接。我阅读了博客文章,但如果我理解您必须使用 [EventAspect] 注释事件。这是否意味着您只能拦截源代码中的事件......在我的情况下,我想拦截“XtraGrid.Load”事件。在我的情况下,编写一个 OnMethodBoundary 方面并拦截可能调用 Load 事件的 OnLoad 方法会更好吗?
    • 查看sharpcrafters.com/downloads/samples/2.1/ModifyThirdAssembly.zip 我还没有这样做,但这是可能的。我建议你拦截自己的代码,但试试看
    • @Jernej Gorički 有关演练,请参阅programmersunlimited.wordpress.com/2011/07/27/…
    • 好的,在使用了 postsharp 样本之后,我意识到从第三方样本中拦截方法并不是解决我的问题的有效方法......我真的应该按照你的建议拦截我自己的代码,但我不再认为 aop 是解决我的问题的正确方法。
    • 这并不总是正确的选择,至少您现在看到了这一点,而不是在您已经投入了开发时间之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多