【发布时间】:2017-02-16 11:53:53
【问题描述】:
我的 WCF 界面如下所示:
[ServiceContract]
public interface IService
{
[OperationContract]
Foo<String>[] Test();
}
Foo<T> 类如下所示:
[DataContract(Name = "FooOf{0}")]
public class Foo<T>
{
public T Value { get; set; }
}
我发布了 WCF 服务并将服务引用添加到我的客户端代码,然后我像这样使用此方法:
var client = new ServiceClient(new BasicHttpBinding(), new EndpointAddress(@"http://myServer:port/Service.svc"));
FooOfString[] result = client.Test();
但是,我无法访问生成的类的属性,例如,我不能这样做:
var value = result[0].Value; // cannot access property, does not compile
我可以通过删除我的Foo<T> 类的[DataContract(Name = "FooOf{0}")] 部分来做同样的事情,我可以访问属性,问题是生成的类的名称更改为FooOfStringCHtiIp13,看起来丑陋,我正在尝试将其重命名为更具可读性的名称。但是,此操作现在有效:
FooOfStringCHtiIp13[] result = client.Test();
var value = result[0].Value; // can access, compiles
感觉有些东西没有被序列化,我没有正确使用它。知道如何正确实现这一目标吗?
【问题讨论】:
-
FooOf{0}将生成的类名格式化为FooOfT,在我的例子中T是Bar -
尝试将 DataMember 属性添加到 Value 属性?
-
我刚刚在您写评论时尝试过。这就是问题所在
标签: c# wcf serialization