这可能属于扩展,覆盖或多态的方法(我是C#和OO的新手,请原谅我,我还在学习:-))。
我有一个使用第三方API的应用。在API中,有一种在自定义控件上进行右键单击+选择操作的方法(该控件是一个图像查看器,用户可以右键单击并循环到父组中存在的另一个图像)。
在我有限的理解中,我认为这两件事中的一件事需要发生(无论是一件事都可以完成,还是其中一件都是好的解决方案!)
谢谢!
答案 0 :(得分:1)
由于您没有发布任何参考文献,我将尝试概述一些方法。
如果有活动
CustomControl cc = yourCustomControl;
cc.SelectionCompleted += (sender, args) => { YourMethod() };
这是使用lambda的 另一种方式是:public class Form1 : Form
{
public Form1()
{
this.cc.SelectionCompleted += HandlerSelectionCompleted;
}
public void HandlerSelectionCompleted(object sender, EventArgs e)
{
YourCustomMethod();
}
}
有一种方法可以覆盖
public class YourCustomControl : CustomControl
{
public override void Selection()
{
base.Selection(); // first call the original method
// now do some custom stuff
}
}
答案 1 :(得分:0)
你不能覆盖那个方法:这是正确的,如果它不受保护/虚拟/抽象,或者你不能从该组件的类派生。 您可以在组件中搜索事件并猜测(如果没有任何文档)在您执行所需操作后触发了哪个事件。并实际执行该事件句柄中的代码。
可能还有其他“黑客”伎俩,但我个人会避免做类似的事情,如果不是为了个人的激情,而是专注于覆盖我的程序,以满足要求和支持该组件,尽可能多我可以。
问候。
答案 2 :(得分:0)
您所描述的是面向方面编程AOP的租户。如果你想要第三方.NET dll,我会推荐PostSharp http://www.sharpcrafters.com/solutions/logging