如何将属性添加到生成的类的属性(Web服务代理)?

时间:2009-07-22 05:55:15

标签: c# silverlight web-services proxy-classes dataform

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

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

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

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

由于

3 个答案:

答案 0 :(得分:2)

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

相反,在应用程序中创建自己的Movie类,并创建将生成的Movie代理类转换为内部Movie类(并返回)的方法,然后创建内部class有所需的行为。我通常将它们包含在一个较低的级别,以便我的大多数代码永远不会看到生成的代理类。

答案 1 :(得分:1)

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

http://blogs.msdn.com/brada/archive/2009/07/21/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-7-services-based-data-store.aspx

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

答案 2 :(得分:0)

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