Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 是否可以扩展分部类以实现notify属性更改?_Wpf_Wcf_Poco_Inotifypropertychanged - Fatal编程技术网

Wpf 是否可以扩展分部类以实现notify属性更改?

Wpf 是否可以扩展分部类以实现notify属性更改?,wpf,wcf,poco,inotifypropertychanged,Wpf,Wcf,Poco,Inotifypropertychanged,我有一个分部类,我用它作为POCO实体,但我也用它作为DTO,用WCF将数据从服务器传输到客户端。这个类只有存储数据库数据所需的属性 然而,在我的客户端,我需要这个类在客户端实现notify属性changed,以便在我的wpfmvvm项目中使用 我想知道是否有可能有扩展类,如果它是相同的类或不是。我的意思是,我希望避免将信息从我的类传递到扩展类所需的时间。我希望这两门课是一样的。我的想法是在一个程序集中将基本类作为DTO,在另一个程序集中将扩展类作为DTO,因此客户端将使用此扩展程序集,但它将是

我有一个分部类,我用它作为POCO实体,但我也用它作为DTO,用WCF将数据从服务器传输到客户端。这个类只有存储数据库数据所需的属性

然而,在我的客户端,我需要这个类在客户端实现notify属性changed,以便在我的wpfmvvm项目中使用

我想知道是否有可能有扩展类,如果它是相同的类或不是。我的意思是,我希望避免将信息从我的类传递到扩展类所需的时间。我希望这两门课是一样的。我的想法是在一个程序集中将基本类作为DTO,在另一个程序集中将扩展类作为DTO,因此客户端将使用此扩展程序集,但它将是同一个类,因此我可以将从服务接收的类分配到扩展类,而无需任何转换


非常感谢。

创建另一个项目(例如称为Solution.Infrastructure),该项目由正在交换的文件组成。在WCF和WPF项目中,添加对Inrrastructure的引用。因此,两者都将使用等效的类,并且您可以轻松地实现INotifyPropertyChanged。Wpf将能够利用它,WCF实际上永远不会从UI刷新机制中受益。

如果您将实体用作DTO,则应仅将其用作DTO,这意味着仅从服务器传输到客户端,并且在客户端中,您应创建另一个模型,然后将DTO映射到客户端中的模型。因此,在模型中,您可以实现任何您喜欢的功能

假设您拥有以下个人实体:

public Person
{
    public string Name { get; set; }
    public DateTime BirthDate { get; set; }
}
您的DTO将如下所示:

[DataContract]
public class PersonDTO
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public DateTime BirthDate { get; set; }
}
以及您在客户机中的模型:

public PersonModel : INotifyPropertyChanged
{
    public string Name { get; set; }
    public DateTime BirthDate { get; set; }
}
通过这种方式,您可以分离DTO和模型之间的逻辑,因为DTO的全部目的是传递低容量的数据

现在,为了从实体映射到DTO或从DTO映射到模型,您可以手动进行映射,也可以在此处检查自动映射:


希望能有所帮助。

装饰师的复制品很适合这里。对不起,我还不清楚细节。此项目具有实现INotifyPropertyChanged的类,这些类用于WCF和WPF?因此,我们可以说DTO类实现了INotifyPropertyChanged。非常感谢。如果您从服务和客户端发送DTO,您的目的是让这些类刷新UI,而不是让它们实现INotifyPropertyChanged,并将它们放在单独的项目中(例如Infrastructure)。WPF将使用INotifyPropertyChanged,WCF不会,因为没有UI。