我正在使用第三方框架,该框架从自定义语言生成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属性来命名节点。但是,我处于不能真正改变生成类的结构的位置(因为它是在第三方框架中完成的),但我只能编辑上面的方法。
有可能吗?
答案 0 :(得分: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;
}
}