gpt4 book ai didi

c# - 如何在C#和java中实现这种可插拔机制?

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:29 25 4
gpt4 key购买 nike

假设我有三个对象 A、B、C。
B是以下接口(interface)的实现:

interface D
{
event EventHandler<OrderEventArgs> OrderCreated;
event EventHandler<OrderEventArgs> OrderShipped;
}

我会在 B 中添加两个函数,它们会引发界面中的事件。

class B
{
RaiseOrderCreated();
RaiseOrderShipped();
}

A 是托管类,将调用 B 的函数来引发指定的事件。我希望在C中我可以监听接口(interface)B或类C,每当B中的事件被引发时,C可以得到通知,然后C可以对事件使用react。

我在思考如何在C#和Java中实现这个机制。
任何帮助或提示将不胜感激!

最佳答案

所以你有一个名为 C 的 EventListener,一个名为 A 的对象,它有一个 B 类型的字段,它是 D 的某个实现的 child 。

通常在 Java 中,您以不同的方式设计 D:

interface D {
static final String ORDER_PROPERTY="ORDER";
void setOrder(Order order);
Order getOrder();
}

class B implements D {
// delegate object to implement support for event listeners and event firing
private java.beans.PropertyChangeSupport propertyChangeSupport = new java.beans.PropertyChangeSupport(this);
private Order order = null; // field that holds current order
@Override
public void setOrder(Order order) {
Order old = this.order;
this.order = order;
propertyChangeSupport.firePropertyChange(ORDER_PROPERTY, old, order);
}
// more B code here
}

关于c# - 如何在C#和java中实现这种可插拔机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com