假设我们有这种情况:
不允许您修改其中任何内容的类:
public class ForbiddenClass_A
{
public void TheMethod()
{
//do stuff
}
}
和另一个只读类,该只读类调用上一个类中的方法:
public class ForbiddenClass_B
{
ForbiddenClass_A fc_a;
void Update()
{
//some logic that if true it will call :
fc_a.TheMethod();
}
}
现在您有了自己的课程,您可以对其进行任何操作,然后您要从中知道 TheMethod():
public class MyClass
{
//call this when TheMethod() from ForbiddenClass_A is called.
public void TheMethod_Catcher()
{
}
}
谢谢!
答案 0 :(得分:2)
是否有一种方法可以捕获方法调用而不将其订阅给任何方法 这类事件?
解耦消息传递可能是event aggregator或任何其他pub子方法消息传递系统想要的位置。尽管您仍然必须订阅某些内容,但参与者不必彼此了解,可以将方法设为私有。
Unity , MvvmLight 都具有这类消息传递系统,但它们确实是一角钱,有很多
此方法可能如何工作的示例
public CreateUserForm()
{
InitializeComponent();
EventPublisher.Instance.Subscribe<NewUserCreated>
(n => listBoxUsers.Items.Add(n.User.Name));
}
...
// some other class
private void Update()
{
var user = new User()
{
Name = textBoxUserName.Text,
Password = textBoxPassword.Text,
Email = textBoxEmail.Text
};
EventPublisher.Instance.Publish(new NewUserRequested(user));
}
更新
如果您对.net感兴趣,可以使用注入技术