C# 对模型值更改作出反应的一般情况

C# 对模型值更改作出反应的一般情况,c#,generics,delegates,action,C#,Generics,Delegates,Action,我正在写一个网络应用程序。“我的模型”对象包含在值更改时调用的委托。我的网络对象使用代理通过网络发送更改的值: 型号: public class Person : AbstractModel { public Action<string, ClientID> nameChangedDelegate; private string __name; public void setName(string name, ClientID id) {

我正在写一个网络应用程序。“我的模型”对象包含在值更改时调用的委托。我的网络对象使用代理通过网络发送更改的值:

型号:

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);
    }
}
公共类人物:抽象模型
{
公共行动名称变更大使;
私有字符串\uuuu名称;
public void setName(字符串名称、ClientID id)
{
这个。uuu name=name;
此.nameChangedElegate(名称、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);
    }
}
公共类PersonRelay:AbstractNetworkRelay
{
公共代理()
{
this.modelObject.nameChangedElegate+=this.nameChanged;
}
public void name已更改(字符串名称、ClientID id)
{
这个.sendStringOverNetwork(名称,id,“setName”);
}
public void setName(字符串名称、ClientID id)
{
this.modelObject.setName(名称,id);
}
}
我的应用程序中有很多模型对象,其中大多数都有一个网络中继。我目前连接委托、通过网络发送值并接收值的方法意味着为每个属性编写了大量重复代码

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

  • 检测模型上的值何时更改
  • 通过网络发送值
  • 接收值
  • 将值指定给正确的参数

是的,您可以使用公共基类的.Net反射来实现这一点。

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


这不是重点。。。但是您不必使用它来访问类成员,我们应该检查
namechangedelegate=调用前为null
,对吗?