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

时间:2015-12-22 15:41:23

标签: wpf wcf poco inotifypropertychanged

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

但是,在我的客户端,我需要这个类在客户端实现notify属性已更改,以便在我的WPF MVVM项目中使用。

我想知道是否有可能有扩展类,如果它是同一个类。我的意思是我想避免将我的课程中的信息传递给我的扩展课程。我想这两个类是一样的。我的想法是在一个程序集中将基本类作为DTO,而在另一个程序集中作为扩展类,所以客户端将使用这个扩展程序集,但它将是同一个类,所以我可以帮助我从服务中收到的类到扩展类而不需要任何转换。

非常感谢你。

2 个答案:

答案 0 :(得分:2)

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

假设您有以下Person人物实体:

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映射到模型,您可以手动执行,或者您可以在此处检查AutoMapper:http://automapper.org/

希望它有所帮助。

答案 1 :(得分:0)

创建另一个项目(例如名为Solution.Infrastructure),其中包含要交换的文件。在WCF和WPF项目中添加对基础结构的引用。因此,两者都将使用等效的类,您可以毫不费力地实现 INotifyPropertyChanged 。 Wpf将能够利用它,WCF实际上永远不会受益于UI刷新机制。