对模型值更改做出反应的一般情况

时间:2014-01-02 01:33:56

标签: c# generics delegates action

我正在编写网络应用程序。我的模型对象包含值更改时调用的委托。我有网络对象使用委托通过网络发送更改的值:

型号:

public class Person : AbstractModel
{
    public Action<string, ClientID> nameChangedDelegate;

    private string __name;

    public void setName(string name, ClientID id)
    {
        this.__name = name;
        this.nameChangedDelegate(name, id);
    }
}

网络:

public class PersonRelay : AbstractNetworkRelay<Person>
{
    public void connectDelegates()
    {
        this.modelObject.nameChangedDelegate += this.nameChanged;
    }

    public void nameChanged(string name, ClientID id)
    {
        this.sendStringOverNetwork(name, id, "setName");
    }

    public void setName(string name, ClientID id)
    {
        this.modelObject.setName(name, id);
    }
}

我的应用程序中有很多模型对象,其中大多数都有网络中继。我目前连接委托,通过网络发送值并接收值的方法意味着为每个单独的属性编写了大量的重复代码。

我的问题是:有什么方法可以编写一个通用案例网络对象:

  • 检测模型上的值何时发生变化
  • 通过网络发送值
  • 收到值
  • 将值分配给正确的参数

2 个答案:

答案 0 :(得分:1)

您应该查看Observer设计模式。如果您使用它,您将必须注册/取消注册观察者和主题..

http://msdn.microsoft.com/en-us/library/ee817669.aspx

答案 1 :(得分:0)

是的,你可以使用公共基类的.Net反射来做到这一点。