0

我有一个从 Web 服务获取数据的 Silverlight 3 应用程序。当我添加对我的 Web 服务的引用时,Web 服务使用的所有类都在代理类中定义。到目前为止,一切都很好……现在,我想使用 Silverlight 3 中提供的 DataForm。要使用该组件,我必须将元数据添加到我的类中(例如,参见下面的代码)。

public class Movie : IEditableObject
{
    public int MovieID { get; set; }

    [Display(Name="The Movie Name")]
    public string Name { get; set; }    
}

我的问题是,考虑到类 Movie 是在 .NET 生成的代理类中定义的,如何在不修改生成的类的情况下将属性/元数据添加到 Movie 类的属性中?

谢谢

4

3 回答 3

2

简而言之; 你没有。不要编辑生成的代码,因为您的更改将在下次生成时丢失。

相反,Movie在您的应用程序中创建您自己的类并创建将生成的Movie代理类转换为您的内部Movie类(并返回)的方法,然后使您的内部类具有所需的行为。我通常在低级别将它们包装在一起,这样我的大部分代码都不会看到生成的代理类。

于 2009-07-22T06:01:39.827 回答
1

如果可以将您的 Web 服务转换为使用 .NET RIA 服务,您可以使用此技术将属性应用于属性,而无需使用包装类:

http://blogs.msdn.com/brada/archive/2009/07/21/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-7-基于服务的数据存储.aspx

使用 RIA 服务,您可以在服务器端应用属性 - 代码生成器足够智能,可以在生成代码时拾取它们并在客户端应用它们。

于 2009-07-22T12:00:27.823 回答
0

如果你真的需要在生成的类中添加一些东西,你仍然可以使用分部类来实现,而无需修改生成类中的任何内容。

于 2009-07-22T06:20:44.920 回答