gpt4 book ai didi

silverlight - WCF Ria 服务实体和 INotifyPropertyChanged

转载 作者:行者123 更新时间:2023-12-04 06:25:07 25 4
gpt4 key购买 nike

我遇到了一个问题,即未为所有属性引发来自生成的 Ria 服务实体的 PropertyChanged 事件。

当我查看生成的代码(客户端)时,我可以看到我的实体是从实现 INotifyPropertyChanged 的​​实体对象派生的。我还可以看到某些属性(如 Id 属性)引发了 PropertyChanged 事件,但有些则没有。

我没有使用任何 T4 模板,所以使用了默认模板。

所以,我的问题是:

是否有我可以设置的选项/属性,以便为生成的客户端实体的任何属性引发 PropertyChanged 事件?

任何帮助,将不胜感激。

编辑:

这是一个属性的例子,在自动生成的 中客户端文件,其中 没有 引发 PropertyChanged 事件:

    [DataMember()]
[Required()]
[StringLength(50)]
public string FirstName
{
get
{
return this._firstName;
}
set
{
if ((this._firstName != value))
{
this.OnFirstNameChanging(value);
this.RaiseDataMemberChanging("FirstName");
this.ValidateProperty("FirstName", value);
this._firstName = value;
this.RaiseDataMemberChanged("FirstName");
this.OnFirstNameChanged();
}
}
}

这就是模型 中定义的内容服务器端 :
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String FirstName
{
get
{
return _FirstName;
}
set
{
OnFirstNameChanging(value);
ReportPropertyChanging("FirstName");
_FirstName = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("FirstName");
OnFirstNameChanged();
}
}

这是一个属性的例子,在自动生成的 中客户端文件,其中 引发 PropertyChanged 事件:
    [DataMember()]
[Editable(false, AllowInitialValue=true)]
[Key()]
[RoundtripOriginal()]
public Guid Id
{
get
{
return this._id;
}
set
{
if ((this._id != value))
{
this.OnIdChanging(value);
this.ValidateProperty("Id", value);
this._id = value;
this.RaisePropertyChanged("Id");
this.OnIdChanged();
}
}
}

这就是模型 中定义的内容服务器端 :
    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}

最佳答案

属性(property)变更 事件被封装在 RaiseDataMemberChanged ()。您可以使用任何反编译器(.NET Reflector 等)进行检查。

RaiseDataMemberChanged 和 RaiseDataMemberChanging 方法用于通知框架有关更改跟踪和状态转换的更改。

这两个属性是不同的,因为 Id 属性是用 Key-Attribute 修饰的。我认为具有此属性的属性会得到特殊处理,由于与其他实体的关联以及不同的自动生成实现,因此不需要跟踪更改或更改时的转换。

所以在你的情况下,我认为还有另一个问题,为什么你的 PropertyChanged 事件(可能)没有被触发。

关于silverlight - WCF Ria 服务实体和 INotifyPropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6128384/

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