0

我正在使用从自定义语言生成 WCF 服务的第三方框架。但是,当使用集合类时,这是生成的输出:

namespace MyNameSpace
{
    using System;
    using System.ServiceModel;

    [MessageContract]
    public class FindSomethingResponse
    {
        [MessageBodyMember(Order=1)]
        public System.Collections.Generic.List<SomethingDC> response;
    }
}

这很好,但在使用服务时会导致一些不希望的结果。这是上面生成的 XSD:

<FindSomethingResponse>
    <ArrayOfSomethingDC>
        <SomethingDC/>
        <SomethingDC/>
        <SomethingDC/>
        ...
    </ArrayOfSomethingDC>
</FindSomethingResponse

“组节点”称为 ArrayOfSomethingDC,但我宁愿将其称为更有意义的东西(例如“Somethings”)。

据我发现,我必须使用 CollectionDataContract 属性来命名节点。但是,我处于无法真正更改生成类的结构的位置(因为它是在第三方框架中完成的),但我只能编辑上述方法。

有没有可能?

4

1 回答 1

0

尝试如下

   namespace MyNameSpace
    {
        using System;
        using System.ServiceModel;

        [CollectionDataContract(Name = "Somethings", ItemName = "SomethingDC")]
        public class CustomList<T> : List<T>
        {
            public CustomList()
                : base()
            {
            }

            public CustomList(T[] items)
                : base()
            {
                foreach (T item in items)
                {
                    Add(item);
                }
            }
        }


        [MessageContract]
        public class FindSomethingResponse
        {
            [MessageBodyMember(Order = 1)]
            public CustomList<SomethingDC> response;
        }
    }
于 2012-04-23T17:09:00.037 回答