【问题标题】:How to add attributes to properties of a class generated (web service proxy)?如何将属性添加到生成的类的属性(Web 服务代理)?
【发布时间】:2009-07-22 20:00:27
【问题描述】:

我有一个 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; }    
}

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果可以将您的 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-services-based-data-store.aspx

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        猜你喜欢
        • 2010-09-28
        • 2010-10-13
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-28
        • 1970-01-01
        相关资源
        最近更新 更多